![]() |
FileStream speichern und auslesen
Hi NG.
Delphi 4 (update 3) Ich speichere aus dem Internet eine CSV-Datei, die ich anschließend in einem Memo anzeigen lassen will. Bisher habe die Datei per Indy idHttp.Get in ein Filestream gespeichert und anschließend die gespeicherte Datei als Textdatei in das Memo eingelesen. Ein wenig umständlich das ganze. Wie geht es einfacher? Einen Ansatz habe ich bereits, bin mir aber nicht sicher, ob der Umstand nötig ist. Da es keine Methode gibt einen Filestream zeilenweise auszulesen, muss ich im Filestream das <CR> suchen, immer bis zu diesem Zeichen auslesen und dies als Zeile ins Memo.Lines.Add übertragen. Ist das wirklich meine einzige Möglichkeit? Gruß, Peter |
Re: FileStream speichern und auslesen
geht das denn so nicht?
Delphi-Quellcode:
Memo1.Lines.LoadFromStream(MyStream);
|
Re: FileStream speichern und auslesen
Wenn du das ganze nicht abspeichern willst, wäre ein TMemoryStream wohl am geeignesten.
|
Re: FileStream speichern und auslesen
@Teron_G
Irgendwie klappt das bei mir nicht und das Memo zeigt als Resultat überhaupt keine Daten an. Hier mein Code:
Delphi-Quellcode:
Lade ich stattdessen nach dem try..end die Memo.Lines aus einem Textfile zeigt es mir alles perfekt an.
f := tfilestream.Create(sFile,fmCreate);
try HTTP.Get(sUrl, f); memo1.lines.clear; memo1.lines.loadfromstream(f); finally f.Free; end; @3_of_8 Doch ich will es auch abspeichern, da eine andere Anwendung auf die Daten zugreifen muss. |
Re: FileStream speichern und auslesen
Hallo,
wenn ich mich nicht sehr irre, bietet das Memo auch direkte .loadfromfile und .savetofile Prozeduren an. mfG Markus |
Re: FileStream speichern und auslesen
Mit fmCreate als Parameter bei TFileStream.Create kann man nicht aus dem Stream lesen. Entweder TMemoryStream oder fmOpenReadWrite.
|
Re: FileStream speichern und auslesen
Ok, das habe ich geändert, allerdings so:
Delphi-Quellcode:
Im Endeffekt, zeigt es mir trotzdem kein Ergebnis.
if not FileExists(sFile)
then FileCreate(sfile); f := tfilestream.Create(sFile,fmOpenReadWrite); Weitere Vorschläge? Bitte :cry: |
Re: FileStream speichern und auslesen
Hallo nochmal,
An den Filestream wird der direkte Dateipfad übergeben, kein Datei-Objekt. Sprich:
Delphi-Quellcode:
Zudem würde ich bei der Arbeit mit Streams grundsätzlich eine Exception-Behandlung vorsehen, da bei einem Stream-Zugriff solche leicht auftreten können.
var fs: TFileStream;
begin fs := TFileStream.Create('C:\tmp.txt',fmOpenReadWrite); . . . end; mfG Markus EDIT: Wenn du das bei deiner obigen Fehlerbeschreibung gemacht hast, könnte das der Grund sein, warum das dein Memo "nichts" anzeigt. |
Re: FileStream speichern und auslesen
Zitat:
@PASST: Der Zeiger im Stream steht nach dem Einlesen hinter dem Text. Du musst ihn per Seek wieder an den Anfang des Streams bringen. |
Re: FileStream speichern und auslesen
Naja ... eigentlich stimmts ja teilweise, dafür ist .Read zuständig *duckundweg*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz