Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ExtractFileName bei ListBox? (https://www.delphipraxis.net/75105-extractfilename-bei-listbox.html)

mlspider 14. Aug 2006 15:05


ExtractFileName bei ListBox?
 
Delphi-Quellcode:
AudioPlayList.ListBox1.Items:=ExtractFileName(OpenDialog1.Files);
kann nicht funktionieren, da TString und String inkompatibel sind. Wie geht es richtig?

freak4fun 14. Aug 2006 15:09

Re: ExtractFileName bei ListBox?
 
Versuchs mal mit
Delphi-Quellcode:
AudioPlayList.ListBox1.Items.Add(ExtractFileName(OpenDialog1.Files));
;)

MfG
freak

mlspider 14. Aug 2006 15:11

Re: ExtractFileName bei ListBox?
 
Ebenfalls inkompatibel. (TString und String)

DGL-luke 14. Aug 2006 15:14

Re: ExtractFileName bei ListBox?
 
if AudioPlayList.ListBox1.Items is TStrings then muss das gehen.

Sag doch mal genauer, was für Fehlermeldungen kommen.

EDIT: aaaahhhh....

du musst die dateinamen alle einzeln extrahieren.

Hawkeye219 14. Aug 2006 15:15

Re: ExtractFileName bei ListBox?
 
Ohne Schleife wird es wohl nicht gehen:

Delphi-Quellcode:
procedure CopyFileNames (Source, Target: TStrings);
var
  i : Integer;
begin
  Target.Clear;
  for i := 0 to Source.Count - 1 do
    Target.Add(ExtractFileName(Source[i]));
end;
 
begin
  CopyFileNames (OpenDialog1.Files, AudioPlayList.ListBox1.Items);
end;
Gruß Hawkeye

mlspider 14. Aug 2006 15:18

Re: ExtractFileName bei ListBox?
 
Geht es auch ohne for Schleife?

@Lukas, die übliche Fehlermeldung, wenn eine Inkompatibilität zwischen TString und String vorliegt.

freak4fun 14. Aug 2006 15:19

Re: ExtractFileName bei ListBox?
 
Ungetestet:
Delphi-Quellcode:
var
  i: Integer;
begin
  for i := 0 to OpenDialog1.Files.Count - 1 do
    AudioPlayList.ListBox1.Items.Add(ExtractFileName(OpenDialog1.Files[i]));
Hatte das Files mit FileName verwechselt. :pale:

MfG
freak

mlspider 14. Aug 2006 15:26

Re: ExtractFileName bei ListBox?
 
Also alles einzeln durchlaufen. Ja, so gehts. Danke.

Jürgen Thomas 14. Aug 2006 15:35

Re: ExtractFileName bei ListBox?
 
Es geht auch direkt, da ListBox.Items und OpenDialog.Files beide vom Typ TStrings sind. Also kann auch direkt zugewiesen werden:
Delphi-Quellcode:
ListBox1.Items.Clear;
ListBox1.Items.AddStrings(OpenDialog1.Files);
Jürgen

[/edit]Nachtrag
Zitat:

Zitat von freak4fun
Aber da kann er nicht das ExtractFileName anwenden. freak

Zitat:

Zitat von mlspider
Genau darum ging es mir...

Sorry, nach den vielen Schleifen habe ich das nicht mehr gelesen. Aber vielleicht geht es doch noch schneller, weil ja nach einem OpenDialog alle Dateien aus dem gleichen Verzeichnis stammen. Damit kannst Du aus der ersten Datei das Verzeichnis bestimmen, damit die Länge des Pfades und mit einem Copy oder Delete die einzelnen Files-Einträge kürzen.
Delphi-Quellcode:
var i0, i1: Integer;
begin
  AudioPlayList.ListBox1.Items.Clear;
  //  ich setze voraus, dass mindestens 1 Datei ausgewählt wurde
  i0 := Length(ExtractFileDir(OpenDialog1.Files[0]));
  //  ich erinnere mich nicht mehr, ob '\' enthalten ist; ggf. i0+1 verwenden
  for i1 := 0 to OpenDialog1.Files.Count - 1 
  do AudioPlayList.ListBox1.Items.Add( Copy(OpenDialog1.Files[i1], i0+1, 255));
end;
Ich vermute sehr stark, das geht schneller, weil ExtractFileName bei jeder Datei das Ende des Pfades suchen muss, während dies nur einmal nötig ist.

Jürgen

PS. Sorry für mein Versehen!

freak4fun 14. Aug 2006 15:38

Re: ExtractFileName bei ListBox?
 
Zitat:

Zitat von Jürgen Thomas
Es geht auch direkt, da ListBox.Items und OpenDialog.Files beide vom Typ TStrings sind. Also kann auch direkt zugewiesen werden:
Delphi-Quellcode:
ListBox1.Items.Clear;
ListBox1.Items.AddStrings(OpenDialog1.Files);
Jürgen

Aber da kann er nicht das ExtractFileName anwenden. ;)

MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 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-2025 by Thomas Breitkreuz