![]() |
application.exename
Hallo Leute,
ich wollte gerade eigentlich wie gewohnt meinen Speicherort finden und dort den 'picture' Ordner per Programm finden, allerdings funktioniert folgender Befehl nicht mehr: dir:= ExtractFilePath(application.Exename); //undeklarierter bezeichner 'Exename' Er funktioniert wahrscheinlich nicht mehr, da ich ein Firemonkey Projekt erstellt habe, das auf Android laufen soll. Deshalb habe ich "Vcl.Forms" nicht unter "uses" stehen.. Gibt es einen komplementären Befehl für FMX oder sollte ich nur etwas unter uses hinzufügen?:/ Vielen dank im voraus! |
AW: application.exename
Um plattformunabhängig zu sein, solltest du besser die in System.IOUtils bereitgestellten Pfade verwenden (
Delphi-Quellcode:
,
TPath.GetHomePath
Delphi-Quellcode:
usw.). Da du in den meisten Fällen eh nicht in den Pfad schreiben darfst, in dem deine Anwendung liegt, bist du mit diesen Wrappern eigentlich besser bedient.
TPath.GetDocumentsPath
|
AW: application.exename
klappt super ich danke dir:)
|
AW: application.exename
Zitat:
Delphi-Quellcode:
würde auch nicht schaden.....
ExtractFilePath(ParamStr(0))
|
AW: application.exename
Zitat:
|
AW: application.exename
Zitat:
Zitat:
Delphi-Quellcode:
.
TPath.GetLibraryPath
Eine Übersicht der Bedeutungen für die verschiedenen Plattformen gibt es hier: ![]() |
AW: application.exename
Aah Danke, ist mir entgangen. Bei GetLibraryPath habe ich an sowas wie wie System32 und co gedacht. Man sollte mehr lesen und weniger denken. :shock:
|
AW: application.exename
Ich wollte eigentlich meine alte Funktion welche ShGetSpecialFolderLocation aufruft rausschmeißen und durch die TPath-Varianten ersetzen.
Aber CSIDL_DESKTOPDIRECTORY und CSIDL_STARTMENU scheint es wohl nicht zu geben. |
AW: application.exename
Zitat:
|
AW: application.exename
Schön wäre es dennoch und kürzeren Code hätte man dann auch.
|
AW: application.exename
Zitat:
Delphi-Quellcode:
interface
uses System.IOUtils; type TPathHelper = record helper for TPath private public function GetDesktopFolder: string; function GetStartMenuFolder: string; end; implementation uses Winapi.SHFolder, Winapi.ShlObj; function TPathHelper.GetDesktopFolder: string; var LStr: array[0 .. MAX_PATH] of Char; begin SetLastError(ERROR_SUCCESS); if SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, @LStr) = S_OK then Result := LStr; end; function TPathHelper.GetStartMenuFolder: string; var LStr: array[0 .. MAX_PATH] of Char; begin SetLastError(ERROR_SUCCESS); if SHGetFolderPath(0, CSIDL_STARTMENU, 0, 0, @LStr) = S_OK then Result := LStr; end; |
AW: application.exename
Ok an Class-Helper habe ich ehrlich gesagt nicht gedacht, da ich öfter mal Schlechtes darüber gelesen habe.
:thumb: |
AW: application.exename
Klasse!
Nur eine Kleinigkeit , Result sollte initialisiert werden....... Zitat:
Zitat:
|
AW: application.exename
Ich habs jetzt so gemacht
Delphi-Quellcode:
var
PathHelper: TPath; |
AW: application.exename
Zitat:
Einfach die Unit einbinden und dann zb :
Delphi-Quellcode:
Der ClassHelper erweitert Tpath um die funktionen
myDektop := Tpath.GetDesktopFolder;
|
AW: application.exename
Ich hätte die Methoden allerdings GetWinDesktopFolder und GetWinStartMenuFolder genannt. Wenn dann noch welche für MacOS oder Linux dazu kommen, kann man sie auch entsprechend benennen und kommt nicht durcheinander.
|
AW: application.exename
Zitat:
Wenn ich den Desktop will ist es doch egal ob ich aktuell unter Win oder OSX bin. Ist doch z.B bei TPath.GetDownloadsPath genau so oder? |
AW: application.exename
Äh. Ja. War ein Denkfehler von mir. :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 Uhr. |
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