Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Pfad aus Pfad/Datei.exe emitteln (https://www.delphipraxis.net/157492-pfad-aus-pfad-datei-exe-emitteln.html)

Mike_ 13. Jan 2011 15:15

Delphi-Version: 2007

Pfad aus Pfad/Datei.exe emitteln
 
Hallo,

ich habe bereits mehrfach gegoogelt und die Delphi-Praxis Suchfunktion genutzt.

Dabei kamen folgende Ergebnisse heraus:

ExtractFileDir
ExtractFilePath

Quellpfad:
C://abc/def/ghi.exe

Ziel ist es diesen Pfad umzuwandeln in:

C://abc/def/

Um entsprechend mit ForceDir das Verzeichnis zu erstellen, falls nicht vorhanden (Für meinen Autoupdater).

Aber mit keiner der 2 oben genannten Methoden kann ich mir den .exe Namen aus dem Pfad herauskürzen lassen.

Womit nur kann ich mir den Pfad richtig kürzen ?


Es hat sich erledigt.
Mein Fehler lag daran, dass der Pfad nicht "richtig" mitgegeben wurde.

Pfadbeispiel: C://abc/def/ghi.exe


Diesen extracted er nicht korret da er wie folgt aussehen muss:

richtiges Pfadbeispiel: C:\\abc\def\ghi.exe

Deep-Sea 13. Jan 2011 15:17

AW: Pfad aus Pfad/Datei.exe emitteln
 
Ist der Pfad nicht falsch? Müsste er nicht wenn dann so lauten: C:\abc\def\ghi.exe :?:

mkinzler 13. Jan 2011 15:19

AW: Pfad aus Pfad/Datei.exe emitteln
 
Windows verwendet Backslahes und delphi mag keine Vedoppelung a la c++
Delphi-Quellcode:
Pfad := ExtractFilePath( StringReplace( datei, '//', '\', [rfReplaceAll]);

DeddyH 13. Jan 2011 15:22

AW: Pfad aus Pfad/Datei.exe emitteln
 
Delphi-Quellcode:
Copy(Pfad, 1, LastDelimiter('/', Pfad))

generic 13. Jan 2011 15:42

AW: Pfad aus Pfad/Datei.exe emitteln
 
Zitat:

Zitat von Mike_ (Beitrag 1074509)

Ziel ist es diesen Pfad umzuwandeln in:

C://abc/def/

Um entsprechend mit ForceDir das Verzeichnis zu erstellen, falls nicht vorhanden (Für meinen Autoupdater).

  • In Windows sind der Backslash Pfad-Trenner.
  • in der Konstanten "PathDelim" steht der richtige Trenner drin.
  • Benutzerkonten dürfen normal nicht in c:\ schreiben, also wenn du deinen "abc"-Pfad angelegt hast, musst du auf die Datei/Ordnerrechte achten.
  • Den Pfad von deine EXE steht in der Funktion:
    Delphi-Quellcode:
    exepfad:=Paramstr(0);
  • mit folgendem kannst du den Pfad auslesen
    Delphi-Quellcode:
    pfad:=ExtractFilePath( exepfad );
  • mit IncludeTrailingBackslash kannst du dafür sorgen, dass der letzte Slash am Pfad immer dran ist. (Fügt in an wenn er nicht da ist)
  • ExcludeTrailingBackslash macht das Gegenteil - es entfernt den letzten Slash, wenn einer da ist.
  • Besser ist es den Download im Benutzerprofil "Download"-Verzeichnis zu speichern.

himitsu 13. Jan 2011 16:17

AW: Pfad aus Pfad/Datei.exe emitteln
 
Ja, Windows akzeptiert auch die Linux-Pfadtrenner ( / ),
aber diese Delphi-Funktionen unterstützen nur den Standardwindowstrenner ( \ also das schongenannte PathDelim).
(es sei denn mit Delphi wurde für Linux kompiliert, also in Kylix würde dann nur der / unterstützt)

@mkinzler: statt '//' lieber nur '/' verwenden :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz