.. hilfe... was mit Fwrite ;)
-
Schaut ma da:
fwrite(pWalk->Var[i].Length() , sizeof(short) , 1, pSave);
Kommt dieser Fehler:
[C++ Fehler] main.cpp(246): E2034 Konvertierung von 'int' nach 'const void *' nicht möglichwas kann ich da machen? hab schon alles ausprobiert ?
pWalk->Var (AnsiString)

// Achja, wie man sehen kann mus das ergebnis von dem Length() die länge von short haben ^^ muss/will n short speichern!
MFG
Schinken
-
ok habs etz n bissl anders gemacht, aber kann mir jemand erklären warum der so n mist in die datei schreibt?
if(fileSave->Execute()) { FILE *pSave; pSave = fopen(fileSave->FileName.c_str(), "wb"); pWalk = pFirst; if(pSave != NULL) { do{ for(int i=0;i<constArrLength;i++) { short sBuf = (short)pWalk->Var[i].Length(); fwrite(&sBuf ,sizeof(short), 1,pSave); fwrite(pWalk->Var[i].c_str() , sBuf, 1, pSave); } pWalk = pWalk->pNext; }while(pWalk != NULL); }else{ ShowMessage("Konnte Datei nicht schreiben!"); } ShowMessage("Erfolgreich gespeichert!"); fclose(pSave); }Var is n AnsiString array und ich hab mich entschlossen das so zu speichern
[Länge][Text][Länge][Text]Aber sowas schreibt der rein:
桃楲瑳灯敨ࡲ匀档物敮፲䄀捓睨摥湥牧扡湥㐠ㄹ㌳ਰ䔀杧汯桳楥 㔹㔴⼠㐠㈴㜵༴ 㘱‰ 㜹〵ㄳ㠳㤰㐵‵ 㔹㔰ㄵ潫瑮歡䁴楰數浬牵敤敤敍湩䬠浯敭瑮牡ء䐀湡敩٬匀档捩ᡫ嘀湯倭灡数桮楥瑓慲獳Գ㤀㌱ 潆捲桨楥㈀㤳㈹⼠㤠㤸㤸स㠀‹ 㠹㠹㠹‹ 㠹㠹హ开牂琰着扥搮匀档捩業晥ⅴ
BIn am verzweifeln!
MFG
Schinken
-
Hallo
nimm statt dem fwrite lieber einen modernen Stream aus dem Standard
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html
oder aus der VCL (siehe TFileStream in der Builder-Hilfe)Ein Problem ist, das du nicht weist, was sizeof() macht, und was nicht.
bis bald
akari
-
FILE *pOpen; pOpen = fopen(fileOpen->FileName.c_str(), "rb"); pNew = pFirst; if(pOpen != NULL) { while(!feof(pOpen)) { pNew = new vk_liste; if(pFirst==NULL) pFirst = pNew; if(pOld!=NULL){ pOld->pNext = pNew; } pNew->pNext = NULL; for(int i=0;i<constArrLength;i++) { short sBuf; fread(&sBuf, 1 , sizeof(short), pOpen); fread(pNew->Var[i].c_str(), 1, sBuf, pOpen); } pOld = pNew; } pLast = pNew; fclose(pOpen);Problem scheint in dieser zeile zu liegen
fread(pNew->Var[i].c_str(), 1, sBuf, pOpen);(Ps: will das mit fwrite machen
net mit if/ofstream!)
-
Hallo,
versuch doch vor dem Schreiben den AnsiString in char zu wandeln. Dann kannst du sehen ob es an der Umwandlung oder dem Schreiben liegt.evi48
-
Oh da hab ich nicht aufgepasst.
Mit "pNew->Var[i].c_str()" kannst du einen AnsiString in char aber nicht char in Ansistring wandeln. Du mußt "fread(charBuffer, 1, sBuf, pOpen);" einsetzen und später in AnsiString wandeln.
evi48
-
siehe Dir nochmal akaris Post an...