AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ParamStr(0) mit UNC-Pfad

Ein Thema von Sherlock · begonnen am 1. Dez 2017 · letzter Beitrag vom 1. Dez 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#1

ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 12:46
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:
if FileExists(TPath.Combine(TPath.GetDirectoryName(paramstr(0)), 'some.ini')) then
    myIni := TIniFile.Create(TPath.Combine(TPath.GetDirectoryName(paramstr(0)), 'some.ini');
Das funktioniert...bis man die Exe von einem UNC-Pfad startet. Dann landet man in c:\windows

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), keine UNC-Pfade kann?

Wie komme ich unter diesen Umständen zu meinem Ausführungsverzeichnis?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:03
Delphi-Quellcode:
var
  sFilename : String;
begin
  sFilename := Format('%s\some.ini',[ExtractFilePath(Application.ExeName)]);
  if FileExists(sFilename) then myIni := TIniFile.Create(sFilename);
end;
Eventuell funktioniert es auch so:
Delphi-Quellcode:
var
  sFilename : String;
begin
  sFilename := '.\some.ini';
  if FileExists(sFilename) then myIni := TIniFile.Create(sFilename);
end;

Geändert von Delphi.Narium ( 1. Dez 2017 um 13:23 Uhr) Grund: Alternative ergänzt.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:22
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#4

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:28
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:31
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
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:37
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;
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#7

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:38
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:39
ParamStr ist deprecated und wird von ExeName verwendet

Wenn ParamStr aber auch deprecated ist, wie soll man dann an übergebene Parameter kommen?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:42
Geh doch mal mit dem Debugger durch wo der erste Quatsch liefert. Ist es Paramstr(0)?
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: ParamStr(0) mit UNC-Pfad

  Alt 1. Dez 2017, 13:46
Starter-Version
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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