Autor |
Beitrag |
DiamondDog
      
Beiträge: 460
|
Verfasst: Sa 22.11.08 10:33
Hallo Leute,
also ich wollte mal Fragen wie ich es hinbekomme,
das wenn ich damit den Pfad anzeigen lasse:
Delphi-Quelltext 1:
| ExtractFilePath(Application.ExeName); | dabei dann einen Ordner zurück zu gehen?
Beispiel:
Normal
(C:\Dokumente und Einstellungen\Test1\Test2)
Sollte dann so aussehen:
(C:\Dokumente und Einstellungen\Test1)
Danke schon mal fürs Helfen.
Mfg Dog
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 22.11.08 10:53
DiamondDog hat folgendes geschrieben : |
Normal
(C:\Dokumente und Einstellungen\Test1\Test2)
Sollte dann so aussehen:
(C:\Dokumente und Einstellungen\Test1)
|
wenn ich mich nicht total irre ist es normal
(C:\Dokumente und Einstellungen\Test1\Test2 \)
das geht ganz einfach mit den String-Funktionen: Delphi-Quelltext 1: 2:
| S:=Copy(S,1,Length(S)-1); S:=Copy(S,1,Pos('\',S)); |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 22.11.08 11:01
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
DiamondDog 
      
Beiträge: 460
|
Verfasst: Sa 22.11.08 11:38
@ Xion
Das löschen vom Backslash funktioniert.Aber das er alles biß zum letzen Backslash dann kopiert, das funktioniert leider nicht.
Er zeigt dann nur an C:\
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.11.08 11:43
Kein Wunder, er kopiert ja nur bis zum ersten Backslash, nicht bis zum letzten, denn Pos gibt den ersten zurück, schau dir mal den Link an, das sollte gehen.
|
|
DiamondDog 
      
Beiträge: 460
|
Verfasst: Sa 22.11.08 11:53
Ok wie löse ich die Funktion dann per Buttonklick aus?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 22.11.08 11:57
Öhm, wie jede andere auch, wie zum Beispiel ExtractFilePath o.ä., wo liegt das Problem? Delphi-Quelltext 1:
| GetPreviousDirectory(ExtractFilePath(... | Ggf. musst du auch noch ExcludeTrailingPathDelimiter benutzen um sicherzustellen, dass am Ende kein Backslash steht, wenn das bei deinen Pfaden der Fall sein kann.
|
|
DiamondDog 
      
Beiträge: 460
|
Verfasst: Sa 22.11.08 12:15
Ok habs jetzt so versucht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| function GetPreviousDirectory(const APath: string): string; var i: Integer; begin Result:=APath; i:=Length(APath); if i>3 then begin repeat Dec(i); until (APath[i] = '\') or (i=1); if APath[i]='\' then Result:=Copy(APath,1,i); end; ShowMessage(APath); end;
procedure TForm1.Button1Click(Sender: TObject); var APath : string; begin APath := ExtractFilePath(Application.ExeName); ShowMessage(APath); if APath[Length (APath)] <> '\' then begin APath := Copy(APath,1,Length(APath)-1); ShowMessage(APath); end; GetPreviousDirectory(APath); end; | Problem dabei ist:
Er erkennt den Backslash am Ende nicht und deswegen wird dieser auch nicht gelöscht.
Edit:
Das Problem mit dem \ am Ende hab ich gelöst.
Habe <> durch = erstezt.
Jetzt hab ich aber das Problem das die function nicht das macht was sie soll. Das heist si bekommt den Pafd ohne \ an Ende aber sie löscht den letzten Ordner nicht.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 22.11.08 13:10
|
|
DiamondDog 
      
Beiträge: 460
|
Verfasst: Sa 22.11.08 13:19
@ DeddyH das funktioniert super besten Dank.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 22.11.08 13:20
Das funktioniert schon, lass dir mal ausgeben
Delphi-Quelltext 1: 2: 3: 4: 5:
| ... Path := Copy(APath,1,Length(APath)-1); ShowMessage(APath); end; ShowMessage(GetPreviousDirectory(APath)); |
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
|