![]() |
Mehrere Dateien auslesen?
Hi, also ich möchte mit OpenDialog von mehreren Dateien das Datum auslesen und diese dann in einem Feld gespeichert haben.
Bisher habe ich es nur hinbekommen von einer Datei das Datum auszulesen.
Delphi-Quellcode:
ich weiß auch wie ich opendialog dazu bringe mehrer dateien auswählbar zu machen aber dann fehlts mir.
var
Form1: TForm1; fileName : string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var fileDate : Integer; begin fileDate := FileAge(fileName); if fileDate > -1 then ShowMessage(fileName+' Datum = '+ DateToStr(FileDateToDateTime(fileDate))); end; procedure TForm1.auswhlen1Click(Sender: TObject); begin OpenDialog1.Execute; filename := opendialog1.FileName; end; danke schonmal |
Re: Mehrere Dateien auslesen?
Moin,
Du kannst Multi-Selektion vom Opendialog so auslesen:
Delphi-Quellcode:
Grüße,
var
I: Integer; begin if dlgOpen1.execute then begin for I := 0 to dlgOpen1.Files.Count - 1 do begin MachWas(dlgOpen1.Files.Strings[I]); end; end; end; Max |
Re: Mehrere Dateien auslesen?
Hallo Max,
weil Strings die default property ist, kannst du auch so zugreifen:
Delphi-Quellcode:
Grüße vom marabu
begin
with OpenDialog do begin Options := Options + [ofAllowMultiSelect]; if Execute then for i := 0 to Pred(Files.Count) do DoProcess(Files[i]); end; end; |
Re: Mehrere Dateien auslesen?
Moin,
Ah, sehr interessant. Fiel mir bis jetzt noch gar nicht auf. Danke für den Hinweis ;) Grüße, Max |
Re: Mehrere Dateien auslesen?
Delphi-Quellcode:
das habe ich jetzt, im einzelschrittmodus seh ich auch wie er verschiedene dateien anwählt, aber sobal er die 2. hat sagt er "listindex überschreitet maximum (2)" oder so ähnlich.
procedure TForm1.auswhlen1Click(Sender: TObject);
var i:integer; begin OpenDialog1.Execute; for i := 1 to 10 do begin filename[i] := opendialog1.Files.Strings[i]; auslesen(Filename[i],i); end; end; wo liegt mein fehler? |
Re: Mehrere Dateien auslesen?
Files ist eine StringList - deren Items werden von 0 bis Pred(Count) indiziert ...
|
Re: Mehrere Dateien auslesen?
Delphi-Quellcode:
bei dem sagt er mir aber dass "files" ein undefinierter bezeichner ist, sorry ich kenn mich da nicht so aus, ich glaub das ist was ganz dummes was ich hier falsch mache.
for i := 0 to Pred(Files.Count) do
begin filename[i] := opendialog1.Files.Strings[i]; auslesen(Filename[i],i); end; |
Re: Mehrere Dateien auslesen?
ah ich habs, vor das files musste ja noch ein "opendialog1."
jetzt klappt es, ich dank euch allen für die super hilfe :-D |
Re: Mehrere Dateien auslesen?
sorry wenn ich hier wieder was neues schreibe aber ganz 100%ig geht es noch nocht, zwar zeigt er nun alles exakt an aber wenn ich das programm beenden will gibt es eine fehlermeldung:
"Im Projekt Projekt2.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: ' Zugriffsverletzung bei Adresse 00403E46 in Modul 'Projekt2.exe'. Lesen von Adresse 3682943B'. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen." mh ich denke irgendwie hat er ein Problem mit den Zugriffsrechten oder so, was ich da herauslesen kann. hier mein jetziger kompletter quellcode:
Delphi-Quellcode:
var
Form1: TForm1; fileName :array[1..10] of string; fileDate :array[1..10] of Integer; implementation {$R *.dfm} procedure auslesen(i:integer); begin fileDate[i] := FileAge(fileName[i]); end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i := 0 to Pred(opendialog1.Files.Count) do begin if fileDate[i] > -1 then memo1.lines.add(fileName[i]+' last modified date = '+ DateToStr(FileDateToDateTime(fileDate[i]))); end; end; procedure TForm1.auswhlen1Click(Sender: TObject); var i:integer; begin OpenDialog1.Execute; for i := 0 to Pred(opendialog1.Files.Count) do begin filename[i] := opendialog1.Files.Strings[i]; auslesen(i); end; end; |
Re: Mehrere Dateien auslesen?
Deklarier die Arrays mal um, statt von Index 1 bis 10 auf Index 0 bis 9.
|
Re: Mehrere Dateien auslesen?
Besser du verwendest ein dynamisches Array. Du kannst dann auch mal weniger oder mehr als 10 Dateien auswählen und die Länge deines Arrays einfach anpassen.
Delphi-Quellcode:
var
FileNames: array of string; procedure TDemoForm.FileSelectItemClick(Sender: TObject); var i: Integer; begin if OpenDialog.Execute then begin SetLength(FileNames, OpenDialog.Files.Count); for i := Low(FileNames) to High(FileNames) do FileNames[i] := OpenDialog.Files[i]; end; end; |
Re: Mehrere Dateien auslesen?
Das ist natürlich der Königsweg neben einer StringListe.
|
Re: Mehrere Dateien auslesen?
danke nur nun kommt die selbe nachricht schon beim klick auf den button zur ausgabe und ausgeben tut er gar nichts mehr.
Delphi-Quellcode:
var
Form1: TForm1; fileNames :array of string; fileDate :array of Integer; implementation {$R *.dfm} procedure auslesen(i:integer); begin fileDate[i] := FileAge(fileNames[i]); end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i := Low(FileNames) to High(FileNames) do begin if fileDate[i] > -1 then memo1.lines.add(fileNames[i]+' last modified date = '+ DateToStr(FileDateToDateTime(fileDate[i]))); end; end; procedure TForm1.auswhlen1Click(Sender: TObject); var i:integer; begin OpenDialog1.Execute; SetLength(FileNames, OpenDialog1.Files.Count); for i := Low(FileNames) to High(FileNames) do begin filenames[i] := opendialog1.Files.Strings[i]; auslesen(i); end; end; |
Re: Mehrere Dateien auslesen?
Delphi-Quellcode:
procedure TForm1.auswhlen1Click(Sender: TObject);
var i:integer; begin OpenDialog1.Execute; SetLength(FileNames, OpenDialog1.Files.Count); SetLength(FileDate, OpenDialog1.Files.Count); //dieses Array fehlte for i := Low(FileNames) to High(FileNames) do begin filenames[i] := opendialog1.Files.Strings[i]; auslesen(i); end; end; |
Re: Mehrere Dateien auslesen?
Das wäre aber mit einer Stringliste nicht passiert :zwinker:
|
Re: Mehrere Dateien auslesen?
achja mensch glatt vergessen. ok jetzt klappt es. vielen dank für eure hilfe und die viele geduld. :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 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