Como hago para grabar datos en un archivo usando fwrite
Tengo algo hecho pero no me funciona bien.
Estoy trabajando en borland.
Si alguien tiene algun ejemplo que guarde datos en un archivo usando estructuras.
Gracias.
| |||
Lenguaje C++ Como hago para grabar datos en un archivo usando fwrite Tengo algo hecho pero no me funciona bien. Estoy trabajando en borland. Si alguien tiene algun ejemplo que guarde datos en un archivo usando estructuras. Gracias.
__________________ Nada es imposible, con un poco de esfuerzo se logran las cosas.- |
| |||
En Builder 6.0 Ya he encontrado como crear archivos, en www.programacionfacil.com Pero ahora me ha surgido otro problema. struct config //config.dat { int id; char curso[30]; float prec_c; float prec_m; char mat[30]; int idmat; }; void __fastcall TInsCur::Button1Click(TObject *Sender) { config aux; FILE *f; //Verificar que esten completos todos los campos. if(Edit1->Text==""||Edit2->Text=="") { ShowMessage("Completar NOMBRE DEL CURSO y COSTO DEL CURSO"); } else { f = fopen("config.txt","a+"); if(!f) { ShowMessage("El finchero no se puede abrir."); } else { aux.id=fread(&aux.id, sizeof(config), 1, f)+1; aux.curso=Edit1->Text; aux.prec_c=Edit2->Text.ToInt(); aux.mat=Edit3->Text; aux.prec_m=Edit4->Text.ToDouble(); aux.idmat=fread(&aux.idmat, sizeof(config), 1, f)+1; fwrite(&aux, sizeof(aux), 1, f); } fclose(f); } } Tengo 4 edits uno para curso, precio_c, mat, prec_m Ahora me tira un error el compilador cuando quiero ejecutar, me dice que en la linea de aux.curso y aux.mat me sale el siguiente error. [C++ Error] Unit2.cpp(38): E2277 Lvalue required [C++ Error] Unit2.cpp(40): E2277 Lvalue required
__________________ Nada es imposible, con un poco de esfuerzo se logran las cosas.- |
| |||
La linea 38 y 40 son las siguientes aux.curso=Edit1->Text; aux.mat=Edit3->Text;
__________________ Nada es imposible, con un poco de esfuerzo se logran las cosas.- |
| ||||
Si, fue lo que me imagine, probaste de poner Edit1->Text() y Edit3->Text(), sino me equivoco esas son funciones y no miembros de la clase.
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |
| |||
Hola eternal, probe como me dijiste y me salen estos erroes [C++ Error] Unit2.cpp(38): E2314 Call of nonfunction [C++ Error] Unit2.cpp(40): E2314 Call of nonfunction Lineas 38 y 40 aux.curso=Edit1->Text(); aux.mat=Edit3->Text(); Que es lo que pasa
__________________ Nada es imposible, con un poco de esfuerzo se logran las cosas.- |
| ||||
Recien lei el codigo completo, claro que no funciona, estas tratando de asignar un puntero a un array de cadenas. podes probar asi, pero tene en cuenta que si el texto es mayor a 30 caracteres (los que les asignaste a esos arrays) va a dar problemas: strcpy(aux.curso, Edit1->Text); strcpy(aux.mat, Edit3->Text); Tambien podrias usar buffers dinamicos, seria lo ideal.
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |
| |||
Gracias eternal pero sigue sin funcionar me tira el siguiente error ahora [C++ Error] Unit2.cpp(40): E2034 Cannot convert 'AnsiString' to 'const char *' [C++ Error] Unit2.cpp(40): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'AnsiString') Tengo que cambiar alguna propiedad del edit¿?
__________________ Nada es imposible, con un poco de esfuerzo se logran las cosas.- |
| |||
AL FINNNN strcpy(aux.curso, Edit1->Text.c_str()); Asi quedaria la cadena para que no me largue error. Gracias por colaborar.
__________________ Nada es imposible, con un poco de esfuerzo se logran las cosas.- |
| ||||
Si, es que como pensaba al principio necesitaba una funcion para devolver la cadena, pero no era Text je. De cualquier manera recorda que si la cadena tiene mas de 29 bytes se va a producir un error.
__________________ ¡Peron cumple, Evita dignifica! VIVA PERON CARAJO |