Mehrere Bilder mit TFileStream in einer Datei speichern und laden
-
Hi
Ich versuchte eine TStringList und mehrere TBitmap abzuspeichern und wieder zu laden.
Das Abspeichern scheint einwandfrei zu funktionieren (ich hab die Dateigröße nachgerechnet, sie stimmt).
Beim laden funktioniert es leider nicht mehr.
Es kommt keine Fehlermeldung, aber die Bilder und die StringList sind leer.Wäre nett, wenn mich jemand auf den Fehler in meinem code hinweisen könnte, ich suche ihn leider schon ewig und konnt ihn bisher immernoch nicht finden

meine Speichernfunktion:
int Size = 0; TFileStream *FileStream = new TFileStream("Mein Pfad",fmCreate); TMemoryStream *MemoStream = new TMemoryStream; StringList->SaveToStream(MemoStream); //StringList ist irgendwo als TStringList declariert Size = MemoStream->Size; FileStream->Write((byte*)&Size,sizeof(int)); FileStream->CopyFrom(MemoStream,0); MemoStream->Clear(); Bitmap->SaveToStream(MemoStream); //Bitmap ist irgendwo als TBitmap declariert Size = MemoStream->Size; FileStream->Write((byte*)&Size,sizeof(int)); FileStream->CopyFrom(MemoStream,0); MemoStream->Clear(); MemoStream->Free(); FileStream->Free();meine Ladenfunktion:
int Size = 0; TFileStream *FileStream = new TFileStream("Mein Pfad" ,fmOpenRead); TMemoryStream *MemoStream = new TMemoryStream; FileStream->Read((byte*)&Size,sizeof(int)); MemoStream->CopyFrom(FileStream,Size); StringList->LoadFromStream(MemoStream); //StringList ist irgendwo global declariert MemoStream->Clear(); FileStream->Read((byte*)&Size,sizeof(int)); MemoStream->CopyFrom(FileStream,Size); Bitmap->LoadFromStream(MemoStream); //Bitmap ist irgendwo global als TBitmap declariert MemoStream->Clear(); MemoStream->Free(); FileStream->Free();
-
Hallo,
Dein Memorystream steht nach dem CopyFrom am Ende, so dass nichts mehr gelesen werden kann. Mach einfach nach dem CopyFrom ein MemoStream->Position = 0;
-
sizeof(int)
Das haut hin??
Der 2. Parameter ist Count -> das in der Größe von int???
-
Warum nicht? Er schreibt ja auch ein int raus.
-
War Unsinn Size wird gespeichert.
-
Danke für die schnelle antwort.
Jetzt funktioniert es einwandfrei