Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrere Dateien auslesen? (https://www.delphipraxis.net/103118-mehrere-dateien-auslesen.html)

gnui 10. Nov 2007 12:36


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:
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;
ich weiß auch wie ich opendialog dazu bringe mehrer dateien auswählbar zu machen aber dann fehlts mir.

danke schonmal

Prototypjack 10. Nov 2007 12:42

Re: Mehrere Dateien auslesen?
 
Moin,

Du kannst Multi-Selektion vom Opendialog so auslesen:

Delphi-Quellcode:
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;
Grüße,
Max

marabu 10. Nov 2007 13:04

Re: Mehrere Dateien auslesen?
 
Hallo Max,

weil Strings die default property ist, kannst du auch so zugreifen:

Delphi-Quellcode:
begin
  with OpenDialog do
  begin
    Options := Options + [ofAllowMultiSelect];
    if Execute then
      for i := 0 to Pred(Files.Count) do
        DoProcess(Files[i]);
  end;
end;
Grüße vom marabu

Prototypjack 10. Nov 2007 13:22

Re: Mehrere Dateien auslesen?
 
Moin,

Ah, sehr interessant. Fiel mir bis jetzt noch gar nicht auf.

Danke für den Hinweis ;)

Grüße,
Max

gnui 10. Nov 2007 13:45

Re: Mehrere Dateien auslesen?
 
Delphi-Quellcode:
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;
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.
wo liegt mein fehler?

marabu 10. Nov 2007 14:01

Re: Mehrere Dateien auslesen?
 
Files ist eine StringList - deren Items werden von 0 bis Pred(Count) indiziert ...

gnui 10. Nov 2007 14:08

Re: Mehrere Dateien auslesen?
 
Delphi-Quellcode:
for i := 0 to Pred(Files.Count) do
  begin
        filename[i] := opendialog1.Files.Strings[i];
        auslesen(Filename[i],i);
  end;
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.

gnui 10. Nov 2007 14:10

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

gnui 10. Nov 2007 14:15

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;

DeddyH 10. Nov 2007 14:22

Re: Mehrere Dateien auslesen?
 
Deklarier die Arrays mal um, statt von Index 1 bis 10 auf Index 0 bis 9.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz