Autor Beitrag
bruce185
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: So 08.02.09 21:44 
Hallo,
ich möchte von einem bestimmten Ordner alle Textdateien im Record speichern, also nur den Inhalt der Textdateien.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TTextFile = record
  FileName: string;
  Text: string;
end;

var
  Form1: TForm1;
  TextFile: array of TTextFile;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
  i := 1;
  SetLength(TextFile,i);
  TextFile[i-1].FileName := 'Dateiname der Textdatei';
  TextFile[i-1].Text := 'Den Inhalt der Textdatei';
end;


Die Variable i wird später als Zählvariable benutzt, ich weiss nur nicht, wie ich alle Textdateien von einem Ordner auslesen kann.

Ich bedanke mich schonmal im Voraus.

EDIT: Ich hab das so gelöst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure ListFileDir(Path: string);
var
  SR: TSearchRec;
  i: integer;
  Text: TStringList;
begin
  Text := TStringList.Create;
  if FindFirst(Path + '*.txt', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) then
      begin
        i := i + 1;
        SetLength(TextFile,i);
        TextFile[i-1].FileName := SR.Name;
        Text.LoadFromFile(Path+TextFile[i-1].FileName);
        TextFile[i-1].Text := Text.Text;
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
  Text.Free;
end;


Den rest schaffe ich auch noch.

EDIT 2: Ich habe mal versucht über TStringList über 15000 Texte im Array zu Speichern, also über LoadFromFile u.s.w. und dann sagt mein Programm: Zu wenig Arbeitsspeicher.

Gibt es vieleicht eine bessere möglichkeit?

MfG
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.02.09 22:33 
user profile iconbruce185 hat folgendes geschrieben Zum zitierten Posting springen:
EDIT 2: Ich habe mal versucht über TStringList über 15000 Texte im Array zu Speichern, also über LoadFromFile u.s.w. und dann sagt mein Programm: Zu wenig Arbeitsspeicher.

Gibt es vieleicht eine bessere möglichkeit?
Ja. Sowas nicht machen...

Was erwartest du denn bei 15.000 Texten? Wenn die dann jeweils auch nur 10 Kibibyte groß sind, dann hast du schon 150 Mebibyte, und wenn die noch größer sind entsprechend mehr. Wie viel ist es denn bei dir?
Und wie viel Speicher braucht das Programm bevor die Meldung kommt?

Wenn du dann noch jedes Mal mit SetLength das Array um 1 vergrößerst, das komplette Array also jedes Mal kopierst...