![]() |
Mehrere Textdateien aus Opendialog heraus ausführen
Hallo miteinander,
weiss vielleicht jemand, wie man unter Delphi 3 mehrere Dateien aus Dem OpenDialog heraus der Reihe nach ausführen kann? Also ich habe im Objektinspektor unter Eigenschaften ->Options -> ofAllowMultiSelect auf True gesetzt. Im Programm kann ich nun mehrere Files selektieren und diese Werden im Open Dialog unter Dateiname: in "Filename1.txt""Filename2.txt" usw. angezeigt. Nur bei Programmausführung wird nur die erste Datei Ausgeführt. :-(( -- Was muss ich noch da reinprogrammieren, das alle selektierten Dateien in dem Verzeichnis bearbeitet werden? -- Was muss ich noch da reinprogrammieren, das alle Dateien aus dem ausgewählten Verzeichnis bearbeitet werden? -- Gibt es ne Grenze wenn zu viele Dateien im Verzeichnis sind und wie muss man dann vorgehen?
Delphi-Quellcode:
[edit=Luckie]Delphi-Tag korrigiert. Mfg, Luckie[/edit]
procedure TForm1.BitBtn1Click(Sender: TObject);
var Datei : Textfile; Zeilenpuffer,Filename : String; begin if OpenDialog1.Execute then AssignFile(Datei, Opendialog1.Filename); {$I-} Reset(Datei); {$I+} if IOResult <> 0 then begin MessageDlg('Fehler beim Zugriff auf die Datei', mtWarning, [mbOk], 0); exit; halt end else MessageDlg('Dateigröße in Bytes: ' + IntToStr(FileSize(Datei)), mtInformation, [mbOk], 0); Memo1.Lines.Clear; while not EOF(Datei)do Begin Readln( Datei, Zeilenpuffer); Memo1.Lines.Add(Zeilenpuffer); end; Reihe:=Reihe+1; Edit1.Text:=IntToStr(Reihe); CloseFile(Datei); end; |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Die Dateinamen bfeinden sich in der Eigenschaft TOpenDialog.Files. Das ist eine ganz normale StringListe.
|
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Danke für den Tipp :-))
habe wohl nun ein Schleifenproblem es wird nach wie Vor scheinbar nur eine Datei eingelesen im Memo1 sieht man allerdings die Letzte Datei der Liste. Es sollten im Memo nun alle Files sichtbar sein. Tun sie aber nicht. (Anfängerpech)
Delphi-Quellcode:
[edit=Luckie]Delphi-Tag korrigiert. Du musst die Tags auch schließen mit [/ Delphi]. Mfg, Luckie[/edit]begin if OpenDialog1.Execute then with OpenDialog1.Files do begin AssignFile(Datei, Opendialog1.Filename); {$I-} Reset(Datei); {$I+} if IOResult <> 0 then begin MessageDlg('Fehler beim Zugriff auf die Datei', mtWarning, [mbOk], 0); exit; halt end else MessageDlg('Dateigröße in Bytes: ' + IntToStr(FileSize(Datei)), mtInformation, [mbOk], 0); { Memo1.Lines.Clear;} while not EOF(Datei)do Begin Readln( Datei, Zeilenpuffer); Memo1.Lines.Add(Zeilenpuffer); end; Reihe:=Reihe+1; Edit1.Text:=IntToStr(Reihe); CloseFile(Datei); end; end; |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Du hast kein schleifen-Problem, weil du gar keine Schleife hast. Zumindest sehe ich keine
Schleife, die über die Einträge der Eigenschaft Files läuft. |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Herzlich willkommen in der Delphi-PRAXiS, illbytes.
Wenn du ein Schleifenproblem haben möchtest, dann musst du eher so an die Sache rangehen:
Delphi-Quellcode:
Freundliche Grüße vom marabu
var
s: TStrings; i: Integer; begin with OpenDialog do if Execute then begin s := TStringList.Create; Memo.Clear; try for i := 0 to Pred(Files.Count) do begin s.LoadFromFile(Files[i]); Memo.Lines.AddStrings(s); end; finally s.Free; end; end; end; |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Danke für die Tipps :-))
ich versuch das mal nachzuvollziehen. |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
So nun klappts auch hat ein wenig gedauert.
Ich stell das mal hier rein, ist auch für andere Anfänger bestimmt nicht uninteressant.
Delphi-Quellcode:
Das andere Beispiel finde ich auch ganz interessant und es funktionierte direkt.procedure TForm1.BitBtn1Click(Sender: TObject); var Datei : Textfile; Zeilenpuffer,Filename : String; j : integer; begin if OpenDialog1.Execute then for j := 0 to opendialog1.Files.Count-1 do begin AssignFile(Datei, OpenDialog1.Files[j]); {$I-} Reset(Datei); {$I+} if IOResult <> 0 then begin MessageDlg('Fehler beim Zugriff auf die Datei', mtWarning, [mbOk], 0); exit; halt end else MessageDlg('Dateigröße in Bytes: ' + IntToStr(FileSize(Datei)), mtInformation, [mbOk], 0); while not EOF(Datei)do Begin Readln( Datei, Zeilenpuffer); Memo1.Lines.Add(Zeilenpuffer); end; Reihe:=Reihe+1; Edit1.Text:=IntToStr(Reihe); CloseFile(Datei); end; end; Nur hatte ich Probs. (Fehlermeldung) TStrings und Strings sind nicht miteinander vereinbar als ich versucht hatte S dem Zeilenpuffer zuzuweisen um den Text in meinem Programmrest weiterzuverarbeiten. Würd mich schon interessieren wie man evtl. TStrings in Strings konvertiert oder mit TStrings Textbestandteile (Wörter, Datum, Zeit im String) untersucht (suchen, finden ersetzen). Nochmals Danke für die prompten Anregungen. Schönen Gruß |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Guten Morgen,
Zitat:
Delphi-Quellcode:
ZeilenPuffer := s.Text;
Zitat:
Delphi-Quellcode:
Suchen und Ersetzen kannst du also auf dem gesamten Text oder den einzelnen Zeilen.
var
i: Integer; s: TStrings; begin // ... for i := 0 to Pred(s.Count) do ShowMessage(s[i]); // ... end; Freundliche Grüße |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Halllo zusammen,
nochmal Danke für die Tipps. Das Öffnen funktioniert und auch meine Weiterverarbeitung. Bei beiden Möglichkeiten stellt sich aber leider heraus das ich nur ca 150-160 Dateien öffnen kann. Wähle ich das gesamte Verzeichnis aus, dann wird überhaupt keine Textdatei eingelesen. Die einzulesenden Textdateien haben 2KB Einzeldateigrösse demnach glaube ich nicht an ein Speicherproblem. Es scheint das dort noch ein Fehler der Fehler oder eine Limitierung vorliegt :gruebel: Es muss doch möglich sein so ca. 500 bis 1000 Dateien einzulesen. habe bis jetzt nichts darüber gefunden wie das Prob zu beheben ist. :-( Vielleicht kennt ihr ja das Problem. Schöne Grüße |
Re: Mehrere Textdateien aus Opendialog heraus ausführen
Hi,
wenn du es richtig machst, dann hast du immer nur eine Eingabedatei offen. Wie sieht dein Code denn jetzt aus? Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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