Entwickler-Ecke

Dateizugriff - Inhalt einer Datei auslesen !


Jagg - Mi 27.11.02 14:28
Titel: Inhalt einer Datei auslesen !
Hallo Leute !

Ich benutzte den Befehl "FindFirst,FindNext usw." zum Suchen der Dateien !
Wenn er jetzt die Datei gefunden hat soll er die Datei nicht nur anzeigen,sondern auch den Inhalt der Datei aus lesen und in einem Memefeld hineinschreiben !
Geht das denn überhaupt ???

Jagg !


bis11 - Mi 27.11.02 14:33

Hi,

klar geht das mit folgenden Befehl :


Quelltext
1:
memo1.lines.loadfromfile('Test.txt');                    


Delete - Mi 27.11.02 15:06

Bei Dateien in binär Format dürfte das aber nicht klappen, da das Dateieende-Zeichen für Textdateien auch schon mitten in der Datei vorkommen kann.


bis11 - Mi 27.11.02 15:08

Hi,

jagg hat halt nicht gesagt, was für Dateien es sind ob binär oder ASCII. Deswegen habe ich ja extra als Dateinamen Test.txt genommen.


Jagg - Mi 27.11.02 16:01

ich habe so :

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
  var Text : TSearchRec;
      Quelle : string;
begin
 Quelle := 'C:';
 if FindFirst (Quelle+'\*.txt',faAnyFile,Text) = 0 then
   Memo1.Lines.LoadFromFile (Text);
end;


.... geht aber nicht !


Udontknow - Mi 27.11.02 16:06

Herr Gott noch mal, was ist das denn für eine Beschreibung?

"Geht aber nich"... Anhand so einer klaren Fehlerbeschreibung können wir natürlich das Prob in NullKommaNix lösen... *grummel*

Wie wäre es mit LoadFromFile(Quelle+'\'+Text.Name)?

Cu,
Udontknow


foxy - Fr 29.11.02 08:30

an deiner stelle würde ich es Zeilenweise einlesen geht genauso schnell
ungetestet

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
    
ZNr:=0;
{$i-}
   ReSet(f);     //Datei zum Lesen öffnen
{$i+}
if ioResult <> 0 then halt;
While Not EoF(f) Do Begin
  ZNr:=ZNr+1;
  ReadLn(f,zeile);
  begin
      ListBox1.Items.Add(zeile);
         end;
end;
CloseFile(f);


noch ein tipp: an deiner stelle würde ich kein Memo nehmen da die man nur 735 Zeilen hinein schreiben kann


Udontknow - Fr 29.11.02 09:55

Solange es sich nicht um Megabyte-Texte handelt, ist ein zeilenweises Einlesen doch überflüssig, ist nur Schreibarbeit.

Und seit wann können Memos nur 735 Zeilen haben? Das ist schlicht und ergreifend falsch.

Cu,
Udontknow


foxy - Fr 29.11.02 10:13

wie das ist falsch?? dann versuchs doch ma ich hab versucht 8000 zeil einzulesen ... in einer listbox geht das bei einer mome macht er nach 730 schluss ... haste das überhaupt schon ma versucht ?? bevor du so ne aussage machst :evil:


LCS - Fr 29.11.02 10:16

Hi
die Memos sind beschränkt auf 64K. Wieviele Zeilen das ergibt hängt von der Länge der Zeilen ab.

Gruss Lothar


Udontknow - Fr 29.11.02 10:21

Ja, ich habs versucht... 10000 Zeilen, no prob. Siehe LCS´s Beitrag. Die Begrenzung gilt übrigens nur für Win9x.

Touché! :mrgreen:


foxy - Fr 29.11.02 10:24

hm ok dann entschuldige ich mich :oops:
... wusste das mit der 64k nich sry ... weil ich hab verschieden Versuche gestartet und da immer die selbe anzahl von zeilen kam ... nahm ich das ma an weil mit listbox geht das nu .. ;)