Stream läßt Datei nicht mehr los
-
Hallo ich habe ein kleines Problem mit meinem TFileStream der genutzt wird um
dort das Ergebniss eines HTTP-Request abzulegen.(VORSICHT: Gedächniss Code)
TFileStream *fs = new TFileStream( "output.dat", fmCreate ); TStringList *sl = new TStringList(); http1->Get( "http://localhost/example.php", fs ); delete fs; sl->LoadFromFile( "output.dat" ); /* Prüfroutinen mit dem Inhalt der StringList */ delete sl;
Nun habe ich das Problem das es ab und an vorkommt das ich unter Windows nicht
mehr auf die Datei Zugreifen kann. Es kommt mir so vor als würde mein Programm
die Datei nicht mehr richtig "los lassen". Ich denke auch jenachdem wie das
Programm beendet wird kann es dazu kommen. Gibt es den sauberer Möglichkeiten
den Stream wieder von der Datei zu trennen als einfach den Zeiger via delete
löschen? Evtl. auch mit "Failover" Lösungen?.... irgendwie habe ich das Gefühl ich bekomme gleich einen auf den Deckel
von euch
-
evtl:
TFileStream *fs = new TFileStream( "output.dat", fmCreate ); TStringList *sl = new TStringList(); http1->Get( "http://localhost/example.php", fs ); sl->LoadFromStream(fs); delete fs; /* Prüfroutinen mit dem Inhalt der StringList */ delete sl;
-
Wieso überhaupt ein FileStream. Hier würde doch erstmal ein TMemoryStream ausreichen. Speichern kann man doch nachher mit der StringList.
-
Warum denn dann überhaupt noch einen TFileStream verwenden? Bei der gezeigten Vorgehensweise wäre ein TStringStream, oder nur TStream sinnvoller. Speichern kann man die Datei dann notfalls noch aus der TStringList heraus.
Desweiteren muss man die Position des Streams zurücksetzen, bevor man aus ihm lesen kann. Bei Streams wird immer nur von der aktuellen Position aus gelesen und nach dem Einlesen steht der Positionszeiger am Ende der Streams.[EDIT] Och Braunstein, hättest Du nicht noch mal über den Post drüber sehen können, bevor Du auf 'absenden' klickst.
-
Hmm, warum ein TFileStream. Gute Frage kann ich gerade aus dem FF
gar nicht beantworten. Sinnlos wie mir gerade scheint, hm.Gut mit dem TMemoryStream würde es natürlich auch viel mehr Sinn
ergeben.