Autor Beitrag
TOMahawk85
Hält's aus hier
Beiträge: 15

WinXP
Delphi 2005
BeitragVerfasst: Mi 17.05.06 22:28 
Hallo Forumfreunde,

ich hoffe mir kann jemand dabei helfen, wie ich aus einer Listbox einen Ordner- oder Dateinamen extrahieren kann.

In der Listbox steht zum Beispiel folgendes:

c:\ordner1\ordner2\file1.txt
c:\ordner1\ordner3\file2.txt

Die Frage ist, wie ich "ordner2" und danach "ordner3" als verwertbare Zeichenkette/String aus der Zeichenkette "c:\ordner1\ordner2\file1.txt" bzw. "c:\ordner1\ordner3\file2.txt" extrahieren und in der Form x:='ordner2'; verwenden kann.
Gleiches gilt für die Dateinamen "file1.txt" und "file2.txt" - aber ohne die Endung.

Ich gehe mal davon aus, dass für beide Fälle die gleiche Vorgehensweise zum Einsatz kommt.
Ebenso, dass es in ähnlicher Weise auch bei Edit-Elementen funktioniert.

Ich bedanke mich im Vorraus für die Hilfe,
TOMahawk85
Harry M.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Mi 17.05.06 22:33 
 Pos, Copy sollten Deine Feunde sein.

_________________
Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
TOMahawk85 Threadstarter
Hält's aus hier
Beiträge: 15

WinXP
Delphi 2005
BeitragVerfasst: Mi 17.05.06 22:47 
Ich hab gerade in der Hilfe nachgeschaut und es scheinen ganz nette Funktionen zu sein.
Aber was mache ich, wenn ich keine konkrete Zeichenkette angeben kann, aber trotzdem den 2. Ordner (egal wie er heißt), also den Bereich zwischen "\" und "\" ermitteln will. Dazu müsste ich ja den 1. Ordner (wieder egal wie er heißt) überspringen.
Harry M.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Mi 17.05.06 23:29 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
const
  Path = 'c:\ordner1\ordner2\File.txt';
var
  I: Integer;
  S: String;
begin
  S := ExtractFilePath(Path);
  Delete(S, 13);
  I := Pos('\', S);
  S := Copy(S, I, Length(S));
  Showmessage(S);
end;

_________________
Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
TOMahawk85 Threadstarter
Hält's aus hier
Beiträge: 15

WinXP
Delphi 2005
BeitragVerfasst: Do 18.05.06 00:53 
Nun steht nur noch die Frage, wie ich eine Zeile bzw. ein Element (Pfad+Datei) einer listbox auswählen und diese Zeichenkette bearbeiten kann.
TOMahawk85 Threadstarter
Hält's aus hier
Beiträge: 15

WinXP
Delphi 2005
BeitragVerfasst: Do 18.05.06 13:49 
Kann mir jemand auf die schnelle helfen, denn ohne eine Lösung für das Problem (der Eintrag über diesem hier) kann ich auch nicht mehr anderweitig weiterprogrammieren.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 18.05.06 13:52 
also mit listbox.items.strings[hier die position von deinem element]
herausselektieren

und so in einzelteile zerlegen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
uses FileCtrl;

var pfad: string;
  laufwerk: char;
  verzeichnisse, datei: string;
begin
  pfad:='c:\temp\test\test2.txt';
  ProcessPath(pfad, laufwerk, verzeichnisse, datei);
  // Neue Variableninhalte:
  // laufwerk: 'c'
  // verzeichnisse: '\temp\test'
  // datei: 'test2.txt'

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 18.05.06 15:20 
Hallo,

@user profile iconZeitGeist87
ProcessPath(... kannte ich noch nicht :) , merken!
Leider muss die Datei auf dem Rechner existieren.

@user profile iconTOMahawk85
den letzten Ordner und den Dateinamen ohne Endung kannst Du auch mit in Delphi vorhandenen Funktionen ermitteln.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var Pfad, sTemp, LastDirPart, FileNameNoExt : String;
//...
Pfad := 'C:\temp\Ordner1\Ordner2\eineDatei.txt';

//Extension durch Leerstring ersetzen
sTemp := ChangeFileExt(Pfad,'');//         = 'C:\temp\Ordner1\Ordner2\eineDatei'

//FileName ermitteln
FileNameNoExt := ExtractFileName(sTemp);// = 'eineDatei'

//FileName incl. letzten Backslash abtrennen
sTemp := ExtractFileDir(sTemp);//          = 'C:\temp\Ordner1\Ordner2'

//nun wird die letzte Ordner-Ebene von ExtractFileName als Dateiname behandelt
LastDirPart := ExtractFileName(sTemp);//   = 'Ordner2'

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 18.05.06 15:24 
ging davon aus, dass die Dateien in der Listbox existieren =))))

aber gute Lösung @Lannes

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
TOMahawk85 Threadstarter
Hält's aus hier
Beiträge: 15

WinXP
Delphi 2005
BeitragVerfasst: Do 18.05.06 21:49 
Das ist jetzt genau das, was ich gebraucht habe.
Wenn nicht gerade jemand die Befehle kennt, sucht man sich noch einen Wolf in dem Berg an Befehlen.

Ich danke euch für eure Mühe.