Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FileStream speichern und auslesen (https://www.delphipraxis.net/62651-filestream-speichern-und-auslesen.html)

PASST 7. Feb 2006 16:26


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

TeronG 7. Feb 2006 16:29

Re: FileStream speichern und auslesen
 
geht das denn so nicht?
Delphi-Quellcode:
  Memo1.Lines.LoadFromStream(MyStream);

3_of_8 7. Feb 2006 16:34

Re: FileStream speichern und auslesen
 
Wenn du das ganze nicht abspeichern willst, wäre ein TMemoryStream wohl am geeignesten.

PASST 7. Feb 2006 16:37

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:
  f := tfilestream.Create(sFile,fmCreate);
  try
    HTTP.Get(sUrl, f);
    memo1.lines.clear;
    memo1.lines.loadfromstream(f);
  finally
    f.Free;
  end;
Lade ich stattdessen nach dem try..end die Memo.Lines aus einem Textfile zeigt es mir alles perfekt an.

@3_of_8
Doch ich will es auch abspeichern, da eine andere Anwendung auf die Daten zugreifen muss.

markusj 7. Feb 2006 16:42

Re: FileStream speichern und auslesen
 
Hallo,

wenn ich mich nicht sehr irre, bietet das Memo auch direkte .loadfromfile und .savetofile Prozeduren an.

mfG

Markus

Phistev 7. Feb 2006 16:42

Re: FileStream speichern und auslesen
 
Mit fmCreate als Parameter bei TFileStream.Create kann man nicht aus dem Stream lesen. Entweder TMemoryStream oder fmOpenReadWrite.

PASST 7. Feb 2006 17:01

Re: FileStream speichern und auslesen
 
Ok, das habe ich geändert, allerdings so:
Delphi-Quellcode:
  if not FileExists(sFile)
  then FileCreate(sfile);
  f := tfilestream.Create(sFile,fmOpenReadWrite);
Im Endeffekt, zeigt es mir trotzdem kein Ergebnis.

Weitere Vorschläge?
Bitte :cry:

markusj 7. Feb 2006 17:14

Re: FileStream speichern und auslesen
 
Hallo nochmal,

An den Filestream wird der direkte Dateipfad übergeben, kein Datei-Objekt.
Sprich:

Delphi-Quellcode:
var fs: TFileStream;
begin
fs := TFileStream.Create('C:\tmp.txt',fmOpenReadWrite);
.
.
.
end;
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.

mfG

Markus

EDIT: Wenn du das bei deiner obigen Fehlerbeschreibung gemacht hast, könnte das der Grund sein, warum das dein Memo "nichts" anzeigt.

Khabarakh 7. Feb 2006 17:19

Re: FileStream speichern und auslesen
 
Zitat:

Zitat von Phistev
Mit fmCreate als Parameter bei TFileStream.Create kann man nicht aus dem Stream lesen. Entweder TMemoryStream oder fmOpenReadWrite.

Woher hast du denn das :gruebel: ?
@PASST: Der Zeiger im Stream steht nach dem Einlesen hinter dem Text. Du musst ihn per Seek wieder an den Anfang des Streams bringen.

markusj 7. Feb 2006 17:21

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 09:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz