Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

GetCurrentDir

8 views
Skip to first unread message

coin

unread,
Mar 21, 2012, 4:40:01 AM3/21/12
to
Koristim GetCurrentDir naredbu u dva programa već par godina i uvijek bih za
rezultat dobio direktorij u kojem se nalazi moj exe.

Na mojem stroju od prije par dana kad pokrenem exe kao rezultat dobijem
'C:\Docume~1\coin\LOCALS~1\Temp'.
Ako program pokrenem iz IDE onda sve bude u redu.

Delphi 2006, Win XP SP3.


Antonio Bakula

unread,
Mar 21, 2012, 7:58:06 AM3/21/12
to
current dir je onaj koji je postavljen u shortcutu ako pokrećeš program preko shortcuta, tebi treba direktorij u kojem je tvoj exe, to ćeš dobiti ovako :

ExtractFilePath(Application.ExeName)

coin

unread,
Mar 21, 2012, 8:08:26 AM3/21/12
to
"Antonio Bakula" <ant...@localhost.com> wrote in message
news:1gp2h38xkkm8m.yg027zc1ssqk$.dlg@40tude.net...
> On Wed, 21 Mar 2012 09:40:01 +0100, coin wrote:
>
>> Koristim GetCurrentDir naredbu u dva programa već par godina i uvijek bih
>> za
>> rezultat dobio direktorij u kojem se nalazi moj exe.
>>
>> Na mojem stroju od prije par dana kad pokrenem exe kao rezultat dobijem
>> 'C:\Docume~1\coin\LOCALS~1\Temp'.
>> Ako program pokrenem iz IDE onda sve bude u redu.
>>
>> Delphi 2006, Win XP SP3.
>
> current dir je onaj koji je postavljen u shortcutu ako pokrećeą program
> preko shortcuta, tebi treba direktorij u kojem je tvoj exe, to ćeą dobiti
> ovako :
>
> ExtractFilePath(Application.ExeName)
>

Hvala za ovo, to je rijeąenje. No ostaje nejasno ąto se na mojem stroju
promijenilo, donedavno se i kroz shortcut na desktopu i kroz dvoklik u
exploreru sve odvijalo dobro (godinama) a sad odjednom viąe ne.
Da pojasnim, kad pokrećem aplikaciju u 'On Activate' eventu glavne forme
spremim tekući direktorij u string i to kasnije koristim u raznim točkama.
Kako sam i rekao tekući direktorij dobijem kroz 'GetCurrentDir'.
Sad to odjednom ni u jednoj aplikaciji u kojoj sam to na taj način napisao
ne funkcionira nego kao tekući direktorij stavi moj temp folder. U firmi na
nekoliko računala to i dalje radi a također i kod puno korisnika, nitko se
ne ľali. Pretpostavljam da je stvar u mojim windowsima ali gdje?

Evo sad gledam shortcut.

Target: c:\projekti\app_folder\program.exe
Start in: c:\projekti\app_folder




Ivan@work

unread,
Mar 21, 2012, 8:52:48 AM3/21/12
to
Da li se isto događa i kad napraviš novi program?

coin

unread,
Mar 21, 2012, 9:05:16 AM3/21/12
to
"Ivan@work" <ivan.cv...@pakel.hr> wrote in message
news:jkciv0$6o1$1...@ss408.t-com.hr...
>
> Da li se isto događa i kad napraviš novi program?

Da. Upravo isprobano.


Ivan@work

unread,
Mar 21, 2012, 9:59:44 AM3/21/12
to
Editiraj dpr datoteku (Project -> View Source) tog novog projekta tako
da tako da odmah prikaže GetCurrentDir. Moraš dopuniti 'uses' i dodati
jednu liniju iza 'begin', otprilike ovako:


Program Project1;

uses
Forms, Dialogs, Sysutils,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
ShowMessage(GetCurrentDir);
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

coin

unread,
Mar 21, 2012, 10:20:22 AM3/21/12
to
"Ivan@work" <ivan.cv...@pakel.hr> wrote in message
news:jkcmsg$e40$1...@ss408.t-com.hr...
Opet isto.


Tomislav

unread,
Mar 22, 2012, 8:31:30 AM3/22/12
to
On 21.3.2012 13:08, coin wrote:
> "Antonio Bakula"<ant...@localhost.com> wrote in message
> news:1gp2h38xkkm8m.yg027zc1ssqk$.dlg@40tude.net...
>> On Wed, 21 Mar 2012 09:40:01 +0100, coin wrote:
>>
>>> Koristim GetCurrentDir naredbu u dva programa veæ par godina i uvijek bih
>>> za
>>> rezultat dobio direktorij u kojem se nalazi moj exe.
>>>
>>> Na mojem stroju od prije par dana kad pokrenem exe kao rezultat dobijem
>>> 'C:\Docume~1\coin\LOCALS~1\Temp'.
>>> Ako program pokrenem iz IDE onda sve bude u redu.
>>>
>>> Delphi 2006, Win XP SP3.
>>
>> current dir je onaj koji je postavljen u shortcutu ako pokreæe¹ program
>> preko shortcuta, tebi treba direktorij u kojem je tvoj exe, to æe¹ dobiti
>> ovako :
>>
>> ExtractFilePath(Application.ExeName)
>>
>
> Hvala za ovo, to je rije¹enje. No ostaje nejasno ¹to se na mojem stroju
> promijenilo, donedavno se i kroz shortcut na desktopu i kroz dvoklik u
> exploreru sve odvijalo dobro (godinama) a sad odjednom vi¹e ne.
> Da pojasnim, kad pokreæem aplikaciju u 'On Activate' eventu glavne forme
> spremim tekuæi direktorij u string i to kasnije koristim u raznim toèkama.
> Kako sam i rekao tekuæi direktorij dobijem kroz 'GetCurrentDir'.
> Sad to odjednom ni u jednoj aplikaciji u kojoj sam to na taj naèin napisao
> ne funkcionira nego kao tekuæi direktorij stavi moj temp folder. U firmi na
> nekoliko raèunala to i dalje radi a takoðer i kod puno korisnika, nitko se
> ne ¾ali. Pretpostavljam da je stvar u mojim windowsima ali gdje?
>
> Evo sad gledam shortcut.
>
> Target: c:\projekti\app_folder\program.exe
> Start in: c:\projekti\app_folder
>
>
>
>

Ako ti je jako bitno da to tako radi, zašto, jednostavno na tom mjestu
gdje spremaš current dir ne napraviš:

ChDir(ExtractFilePath(Application.ExeName));
ili
ChDir(ExtractFilePath(ParamStr(0)));

... pa nakon toga tražiš GetCurrentDir i spremiš ga?


coin

unread,
Mar 22, 2012, 8:53:29 AM3/22/12
to
"Tomislav" <tst...@vip.hr> wrote in message
news:jkf633$gv3$1...@sunce.iskon.hr...
> On 21.3.2012 13:08, coin wrote:
>> "Antonio Bakula"<ant...@localhost.com> wrote in message
>> news:1gp2h38xkkm8m.yg027zc1ssqk$.dlg@40tude.net...
>>> On Wed, 21 Mar 2012 09:40:01 +0100, coin wrote:
>>>
>>>> Koristim GetCurrentDir naredbu u dva programa već par godina i uvijek
>>>> bih
>>>> za
>>>> rezultat dobio direktorij u kojem se nalazi moj exe.
>>>>
>>>> Na mojem stroju od prije par dana kad pokrenem exe kao rezultat dobijem
>>>> 'C:\Docume~1\coin\LOCALS~1\Temp'.
>>>> Ako program pokrenem iz IDE onda sve bude u redu.
>>>>
>>>> Delphi 2006, Win XP SP3.
>>>
>>> current dir je onaj koji je postavljen u shortcutu ako pokrećeą program
>>> preko shortcuta, tebi treba direktorij u kojem je tvoj exe, to ćeą
>>> dobiti
>>> ovako :
>>>
>>> ExtractFilePath(Application.ExeName)
>>>
>>
>> Hvala za ovo, to je rijeąenje. No ostaje nejasno ąto se na mojem stroju
>> promijenilo, donedavno se i kroz shortcut na desktopu i kroz dvoklik u
>> exploreru sve odvijalo dobro (godinama) a sad odjednom viąe ne.
>> Da pojasnim, kad pokrećem aplikaciju u 'On Activate' eventu glavne forme
>> spremim tekući direktorij u string i to kasnije koristim u raznim
>> točkama.
>> Kako sam i rekao tekući direktorij dobijem kroz 'GetCurrentDir'.
>> Sad to odjednom ni u jednoj aplikaciji u kojoj sam to na taj način
>> napisao
>> ne funkcionira nego kao tekući direktorij stavi moj temp folder. U firmi
>> na
>> nekoliko računala to i dalje radi a također i kod puno korisnika, nitko
>> se
>> ne ľali. Pretpostavljam da je stvar u mojim windowsima ali gdje?
>>
>> Evo sad gledam shortcut.
>>
>> Target: c:\projekti\app_folder\program.exe
>> Start in: c:\projekti\app_folder
>>
>>
>>
>>
>
> Ako ti je jako bitno da to tako radi, zašto, jednostavno na tom mjestu
> gdje spremaš current dir ne napraviš:
>
> ChDir(ExtractFilePath(Application.ExeName));
> ili
> ChDir(ExtractFilePath(ParamStr(0)));
>
> ... pa nakon toga tražiš GetCurrentDir i spremiš ga?
>
>

Nisi shvatio moje pitanje. Ono glasi 'GetCurrentDir radio je ispravno
godinama. Sad više ne radi. Što se moglo desiti?'.


Tomislav

unread,
Mar 22, 2012, 9:07:05 AM3/22/12
to
On 22.3.2012 13:53, coin wrote:
> Nisi shvatio moje pitanje. Ono glasi 'GetCurrentDir radio je ispravno
> godinama. Sad više ne radi. Što se moglo desiti?'.
>

Tko zna? Nešto je promijenilo current directory. :)
GetCurrentDirectory i dalje ispravno radi, samo što nisi u tom direktoriju.

coin

unread,
Mar 22, 2012, 9:18:10 AM3/22/12
to

"Tomislav" <tst...@vip.hr> wrote in message
news:jkf85r$j68$1...@sunce.iskon.hr...
Upravo tako. I to se dešava sa svim aplikacijama u kojima koristim
GetCurrentDir.


Ivan@work

unread,
Mar 22, 2012, 10:42:47 AM3/22/12
to
Napravi novu console application, stavi ovaj kod pa ga pokreni iz
command prompta. Ako opet dobiješ temp onda nije do Delphija sigurno.

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils, Windows;

var
DirBuf: array[0..MAX_PATH] of WideChar;
begin
GetCurrentDirectoryW(Length(DirBuf), DirBuf);
Writeln(DirBuf);
end.

coin

unread,
Mar 22, 2012, 10:48:57 AM3/22/12
to
"Ivan@work" <ivan.cv...@pakel.hr> wrote in message
news:jkfdp8$bv5$1...@ss408.t-com.hr...
Pa već sam ustanovio da nije do Delpija, ispričavam se ako nisam bio
dovoljno jasan. Naime, isto se dešava i kad pokrenem stare aplikacije koje
su kompajlirane ranije i radile su dobro, imam ih više (desetak). Znači
definitivno je do Windowsa no što se to moglo desiti? Nit sam što instalirao
nit mijenjao u sustavu ?!?


Ivan@Home

unread,
Mar 22, 2012, 11:17:37 AM3/22/12
to
On 22.03.2012 15:48, coin wrote:
> "Ivan@work"<ivan.cv...@pakel.hr> wrote in message
> news:jkfdp8$bv5$1...@ss408.t-com.hr...
>> On 22.03.2012 14:18, coin wrote:
>>> "Tomislav"<tst...@vip.hr> wrote in message
>>> news:jkf85r$j68$1...@sunce.iskon.hr...
>>>> On 22.3.2012 13:53, coin wrote:
>>>>> Nisi shvatio moje pitanje. Ono glasi 'GetCurrentDir radio je ispravno
>>>>> godinama. Sad vi e ne radi. to se moglo desiti?'.
>>>>>
>>>>
>>>> Tko zna? Ne to je promijenilo current directory. :)
>>>> GetCurrentDirectory i dalje ispravno radi, samo to nisi u tom
>>>> direktoriju.
>>>
>>> Upravo tako. I to se de ava sa svim aplikacijama u kojima koristim
>>> GetCurrentDir.
>>>
>>>
>>
>> Napravi novu console application, stavi ovaj kod pa ga pokreni iz command
>> prompta. Ako opet dobije temp onda nije do Delphija sigurno.
>>
>> program Project1;
>>
>> {$APPTYPE CONSOLE}
>>
>> uses
>> SysUtils, Windows;
>>
>> var
>> DirBuf: array[0..MAX_PATH] of WideChar;
>> begin
>> GetCurrentDirectoryW(Length(DirBuf), DirBuf);
>> Writeln(DirBuf);
>> end.
>
>
> Pa već sam ustanovio da nije do Delpija, ispričavam se ako nisam bio
> dovoljno jasan. Naime, isto se de ava i kad pokrenem stare aplikacije koje
> su kompajlirane ranije i radile su dobro, imam ih vi e (desetak). Znači
> definitivno je do Windowsa no to se to moglo desiti? Nit sam to instalirao
> nit mijenjao u sustavu ?!?
>
>

Virus, ili ti je netko instalirao Microsoftov Steady State.

coin

unread,
Mar 22, 2012, 11:23:01 AM3/22/12
to
"Ivan@Home" <cve...@yahoo.com> wrote in message
news:jkffqh$g24$1...@ss408.t-com.hr...
> On 22.03.2012 15:48, coin wrote:
>> "Ivan@work"<ivan.cv...@pakel.hr> wrote in message
>> news:jkfdp8$bv5$1...@ss408.t-com.hr...
>>> On 22.03.2012 14:18, coin wrote:
>>>> "Tomislav"<tst...@vip.hr> wrote in message
>>>> news:jkf85r$j68$1...@sunce.iskon.hr...
>>>>> On 22.3.2012 13:53, coin wrote:
>>>>>> Nisi shvatio moje pitanje. Ono glasi 'GetCurrentDir radio je ispravno
>>>>>> godinama. Sad više ne radi. Što se moglo desiti?'.
>>>>>>
>>>>>
>>>>> Tko zna? Nešto je promijenilo current directory. :)
>>>>> GetCurrentDirectory i dalje ispravno radi, samo što nisi u tom
>>>>> direktoriju.
>>>>
>>>> Upravo tako. I to se dešava sa svim aplikacijama u kojima koristim
>>>> GetCurrentDir.
>>>>
>>>>
>>>
>>> Napravi novu console application, stavi ovaj kod pa ga pokreni iz
>>> command
>>> prompta. Ako opet dobiješ temp onda nije do Delphija sigurno.
>>>
>>> program Project1;
>>>
>>> {$APPTYPE CONSOLE}
>>>
>>> uses
>>> SysUtils, Windows;
>>>
>>> var
>>> DirBuf: array[0..MAX_PATH] of WideChar;
>>> begin
>>> GetCurrentDirectoryW(Length(DirBuf), DirBuf);
>>> Writeln(DirBuf);
>>> end.
>>
>>
>> Pa već sam ustanovio da nije do Delpija, ispričavam se ako nisam bio
>> dovoljno jasan. Naime, isto se dešava i kad pokrenem stare aplikacije
>> koje
>> su kompajlirane ranije i radile su dobro, imam ih više (desetak). Znači
>> definitivno je do Windowsa no što se to moglo desiti? Nit sam što
>> instalirao
>> nit mijenjao u sustavu ?!?
>>
>>
>
> Virus, ili ti je netko instalirao Microsoftov Steady State.

Microsoftov Steady State - ąto je to dovraga?


0 new messages