List in TXT speichern
-
Hallo,
ich habe die Funktion aus der FAQ übernommen, um eine StringGrid in eine TXT abzu speichern.for(...)
list->Add(StringGrid->Rows[Index]->CommaText);
.
.
.
list->SaveToFile(SaveDialog1->FileName);Da aber meine StringGrid jede Sekunde um eine Zeile größer wird, wird das Programm nach ner gewissen Zeit sehr langsam,
da ja ständig die komplette StringGrid über
mit Hilfe einer for-Schleife abgespeichert wird. Nun möchte ich gerne dass nur die aktuelle Zeile der StringGrid in die TXT Datei eingefügt wird bzw ergänzt wird.Hab im moment keine Idee, wie ich das gelöst bekomme. Vielleicht kann mir jemand nen Tipp geben?
Danke
-
Hallo
Das liegt wohl daran das du bei jeder Änderung die komplette Datei neu erstellst und jedesmal speicherst.
Du solltest besser während der ganzen Zeit, wo das StringGrid aktiv ist, im Hintergrund die Datei offenhalten. Dazu verwendest du am besten Streams wie TFileStream aus der Borland-VCL oder std::fstream aus dem C++ Standard.
Den Stream deklarierst du nicht lokal in einer Eventmethode, sondern als Member(-pointer) des Forms. Am Anfang des Prozesses (währscheinlich im Form-Konstruktor) öffnest du den Stream mit dem Dateinamen.
In den Änderungsevents must du nun nur noch die Änderungen in den vorhandenen Stream schreiben, der Stream kümmert sich um weiteres.
Vergiß nicht das je nach Streamart und -verwendung du am Ende diesen eventuell noch schließen/löschen must.bis bald
akari