Thema: Delphi Dateien einlesen

Einzelnen Beitrag anzeigen

schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#1

Dateien einlesen

  Alt 1. Apr 2012, 20:23
Hallo,

ich habe folgenden Quelltext erstellt:

Delphi-Quellcode:
var StillFiles: Integer;
begin
  Image.Proportional := true;
  Image.Stretch := true;
  FFileList := TStringList.Create;
  while (FindFirst(FFilename,faAnyFile,FSearch)=0) and (StillFiles=0) do
  begin
    FFileList.Add(FSearch.Name);
    StillFiles := FindNext(FSearch);
  end;
  FindClose(FSearch);
  ListBox1.Items.Assign(FFileList); //Die soll zum Testen sein, ob die Dateien gelesen wurden
end;
Ich will damit eine Diashow erzeugen, indem ich die Dateinamen (Bilder) meines Verzeichnisses in eine Stringliste einlese um später per Timerereignis einen Stringlistenindex zu inkrementieren und so die einzelnen Dateien in eine TImage Komponente lade mit Image.Picture.LoadFromFile(FFileList.Strings[Index].

Leider wird mit dem obigen Quelltext keine Datei eingelesen und so bleibt die Listbox auch leer. Warum? Was mache ich falsch? Ich habe mir auch diesen Quelltext aus http://forum.delphi-treff.de/showthr...-einer-Diashow

Delphi-Quellcode:
procedure TFHaupt.SBDiaClick(Sender: TObject);
var
  sr : TSearchRec;
  start : Cardinal;
begin
  extension := extractfileext(OpenPictureDialog1.FileName);
  if FindFirst(extractFilepath(OpenPictureDialog1.FileName)+'*'+extension,
     faAnyFile, sr) = 0 then
  begin
    repeat
      image1.Picture.LoadFromFile(sr.Name);
      image1.Update;
      Label1.Caption:=sr.Name;
      start := GetTickCount;
      repeat
        application.ProcessMessages;
      until GetTickCount > (start + warten);
      repeat
        application.ProcessMessages;
        if Bruch then break;
      until weiter;
      if Bruch then break;
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
Hieraus habe ich mir meinen Quelltext darüber gebaut.

Weil es so leider nicht funktioniert:

Delphi-Quellcode:
procedure TBildbetrachter.SpTBXItem2Click(Sender: TObject);
var
  space: String;
begin
  //
  space := ' ';
  if FFilename='then
  begin
    if PicsDialog.Execute then
    begin
      FFilename := PicsDialog.FileName;
      Image.Picture.LoadFromFile(FFilename);
      Bildbetrachter.Caption := Bildbetrachter.Caption + space + FFileName;
      Image.Update;
    end;
    if FindFirst(FFilename,faAnyFile,FSearch) = 0 then
    Timer.Enabled := true;
  end;
end;

procedure TBildbetrachter.TimerTimer(Sender: TObject);
var space: String;
begin
  space := ' ';
  if FindNext(FSearch) = 0 then
  begin
    Bildbetrachter.Caption := Bildbetrachter.Caption + space + FSearch.Name;
    Image.Picture.LoadFromFile(FSearch.Name);
    Image.Update;
  end;
  //Als ich vorher ShowMessage('Timer ausgelöst") testweise hier stehen hatte, wurde der Timer ausgelöst.
end;
Nach dem ButtonClick sehe ich nur das erste Bild. Ich habe das Timer Intervall auf 10 Sekunden eingestellt.

Nachdem das erste Bild angezeigt wurde, kann ich den Dialog zur Dateiauswahl nicht mehr aufrufen.



Was ist hier falsch. Ich werde ein weiteres Thema eröffnen "Mediaplayer verstehen. Denn diesen wollte ich zuvor einsetzen aber der hat nur ein OnClick Ereignis, das wohl ausschliesslich zur Auswertung in Frage kommt. Die Fragen hierzu folgen dort.
.
.
.
.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.

Geändert von schöni ( 1. Apr 2012 um 20:39 Uhr)
  Mit Zitat antworten Zitat