Autor Téma: Application.GetNamePath nevrací správnou cestu  (Přečteno 2633 krát)

zkusmo

  • Host
Application.GetNamePath nevrací správnou cestu
« kdy: 21-09-2012, 10:24:18 »
Ve službě se chci připojit k SQL. Přihlašovací údaje jsou i INI souboru, který bude v adresáři jako EXE. Pomocí Application.GetNamePath chci zjistit cestu, abych mohl najít INI. Bohužel mi to vrací prázdný řetězec. Nevíte co s tím. Dík za info.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1472
  • Karma: 36
    • Pepak.net
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #1 kdy: 21-09-2012, 10:34:36 »
1) Pokud trváš na použití Application, tak použij
Kód: Delphi [Vybrat]
  1. NazevIniSouboru := ExtractFilePath(Application.ExeName) + 'konfigurace.ini';
nebo (pokud se konfigurák jmenuje stejně jako exe, jen má jinou příponu)
Kód: Delphi [Vybrat]
  1. NazevIniSouboru := ChangeFileExt(Application.ExeName, '.ini');

2) Obecně je lépe místo Application.ExeName použít ParamStr(0), mimo jiné proto, že funguje vždy a všude.
« Poslední změna: 21-09-2012, 10:36:20 od pepak »

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1472
  • Karma: 36
    • Pepak.net
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #2 kdy: 21-09-2012, 10:35:59 »
A kromě toho nevím jak tvůj, ale můj Help k Delphi říká, že GetNamePath se týká práce s object inspectorem a se soubory nemá společného vůbec nic:
Citace
Returns a string used by the Object Inspector.

GetNamePath is used to determine the text to display in the Object Inspector for the name of the object being edited. GetNamePath is introduced in TPersistent so descendants such as collections can appear in the Object Inspector. TComponent overrides GetNamePath to return the component's name. Do not call GetNamePath directly.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2668
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #3 kdy: 21-09-2012, 10:49:16 »
Ve službě se chci připojit k SQL. Přihlašovací údaje jsou i INI souboru, který bude v adresáři jako EXE. Pomocí Application.GetNamePath chci zjistit cestu, abych mohl najít INI. Bohužel mi to vrací prázdný řetězec. Nevíte co s tím. Dík za info.

1. Precti si v helpu, k cemu je metoda GetNamePath
2. I kdyby byla k tomu, co si myslis ze je, tak by ti to ve sluzbe nefungoval, protoze sluzba neni aplikace.
3. Je treba zavolat API funkci GetModuleFileName

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2668
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #4 kdy: 21-09-2012, 10:56:47 »
A kromě toho nevím jak tvůj, ale můj Help k Delphi říká, že GetNamePath se týká práce s object inspectorem a se soubory nemá společného vůbec nic:

Ja pouzivam stary help k D6 a tak dokonce pisou:
Citace
GetNamePath is for internal use only. It determines the text that the Object Inspector ...

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1136
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #5 kdy: 21-09-2012, 12:09:53 »
2 pepak:
jen tak ze zvedavosti, kde by nemusel fungovat Application.ExeName?
ParamStr nepouzivam vubec :)

Offline jarex

  • Plnoletý
  • ***
  • Příspěvků: 220
  • Karma: 5
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #6 kdy: 21-09-2012, 13:05:31 »
Tez by me zajimalo kde by to nemelo fungovat ExtractFilePath(Application.ExeName) pouzivam vsude mozne a nerad bych narazil. :-)
D2007 Professional

zkusmo

  • Host
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #7 kdy: 21-09-2012, 13:06:23 »
Application.ExeName nenexistuje. ParamStr(0) funguje správně. Díky.

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 211
  • Karma: 9
    • Verze Delphi: 7, XE6, Delphi 10.2 Tokyo
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #8 kdy: 21-09-2012, 13:18:35 »
Právě ve službě Application.Exename nefunguje, tam je nutné použít ParamStr(0).

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1472
  • Karma: 36
    • Pepak.net
Re:Application.GetNamePath nevrací správnou cestu
« Odpověď #9 kdy: 21-09-2012, 17:17:27 »
2 pepak:
jen tak ze zvedavosti, kde by nemusel fungovat Application.ExeName?
ParamStr nepouzivam vubec :)
Tak třeba v konzolových aplikacích.