![]() |
ParamStr(0) mit UNC-Pfad
Hi zusammen,
ich hab da ein drolliges Problemchen. Ich möchte meiner Anwendung ermöglichen in ihrem Ordner nach einer Datei zu schauen. Ist eigentlich schnell gemacht, ohne sonstige Fehlerbehandlung, Fallbacks und SchnickSchnak erhält man:
Delphi-Quellcode:
Das funktioniert...bis man die Exe von einem UNC-Pfad startet. Dann landet man in c:\windows :shock:
if FileExists(TPath.Combine(TPath.GetDirectoryName(paramstr(0)), 'some.ini')) then
myIni := TIniFile.Create(TPath.Combine(TPath.GetDirectoryName(paramstr(0)), 'some.ini'); Ich weiß leider nicht, welche "archaischen" Techniken verwendet werden, um paramstr(0) zu befüllen, aber kann es etwas mit dem Problem zu tun haben, daß die cmd.exe (auch bekannt als DOS-Prompt), ![]() Wie komme ich unter diesen Umständen zu meinem Ausführungsverzeichnis? Sherlock |
AW: ParamStr(0) mit UNC-Pfad
Delphi-Quellcode:
Eventuell funktioniert es auch so:
var
sFilename : String; begin sFilename := Format('%s\some.ini',[ExtractFilePath(Application.ExeName)]); if FileExists(sFilename) then myIni := TIniFile.Create(sFilename); end;
Delphi-Quellcode:
var
sFilename : String; begin sFilename := '.\some.ini'; if FileExists(sFilename) then myIni := TIniFile.Create(sFilename); end; |
AW: ParamStr(0) mit UNC-Pfad
Ich weiß aber ehrlich gesagt nicht was dein Problem ist, denn ParamStr(0) liefert bei mir immer was es soll, sowohl für
\\someServer\someShare\Project1.exe sowie \\?\C:\somePath\Project1.exe Letzteres wird hierbei als C:\somePath\Project1.exe ausgegeben. Ist das das Problem? Ich habe nix mit C:\Windows. |
AW: ParamStr(0) mit UNC-Pfad
Hmmm... ich nehme alles zurück und behaupte das Gegenteil. Es läuft in einem kleinen Testprojekt wie erwartet. Mit UNC-Pfad und allem. Danke trotzdem Delphi.narium und Günther. Ich habe nur in dem eigentlichen Projekt per ProcMon sehen können, das in c:\windows nach meiner ini-Datei gesucht wurde. Muss eine andere Ursache haben... Grrrr
Edith hat noch eine kleine Anmerkung: Application.ExeName gibt es unter FMX nicht, hatte ich aber auch nicht angegeben, sorry. Unter VCL führt Application.ExeName aber auch nur paramstr(0) aus ;) Sherlock |
AW: ParamStr(0) mit UNC-Pfad
Wenn du schonmal dabei bist
Warum nicht...
Delphi-Quellcode:
if FileExists(ExtractFilePath(paramstr(0)) + 'some.ini') then
// statt viel zu kompliziert ... if FileExists(TPath.Combine(TPath.GetDirectoryName(paramstr(0)), 'some.ini')) then |
AW: ParamStr(0) mit UNC-Pfad
Ich meine mich zu erinnern, dass ParamStr schon mal als deprecated gekennzeichnet war und dass man doch bitteschön Application.Exename verwenden sollte. Doch schau mal einer guck:
Delphi-Quellcode:
function TApplication.GetExeName: string;
begin Result := ParamStr(0); end; |
AW: ParamStr(0) mit UNC-Pfad
Klar, das geht auch, Danke. Ist nur bei mir mittlerweile reine Gewohnheit Pfade und Dateinamen so zusammenzusetzen. Dann geht bei plattformübergreifenden Anwendungen zumindest in der Hinsicht nichts schief (/ statt \).
Sherlock |
AW: ParamStr(0) mit UNC-Pfad
ParamStr ist deprecated und wird von ExeName verwendet :roll:
Wenn ParamStr aber auch deprecated ist, wie soll man dann an übergebene Parameter kommen? |
AW: ParamStr(0) mit UNC-Pfad
Geh doch mal mit dem Debugger durch wo der erste Quatsch liefert. Ist es Paramstr(0)?
|
AW: ParamStr(0) mit UNC-Pfad
Starter-Version :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 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