Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2012, 19:08   #1
eguana
 
Регистрация: 11.11.2008
Сообщений: 9
По умолчанию GetCurrentDir проблемы

Программеры сталкнулся с такой проблемой, при запуске проги через загрузку WinLogon (Shell) программа выдает путь C:\windows\system32\
при включении компа. При последующем включении все нормально.

уже писал

try
Path:=GetCurrentDir+'foldername\';
finnaly
end;

Но такая же байда.

Как побороть ошибку
eguana вне форума Ответить с цитированием
Старый 07.04.2012, 19:52   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Нет никакой ошибки. GetCurrentDir показывает текущую папку. Либо при старте программы сам определяй папку, либо создай ярлык (там должна быть указана рабочая папку) и запускай его.
А лучше вообще не используй GetCurrentDir, ибо оно меняется многими способами (диалоговыми окнами и т.п), в итоге можно потерять пункт назначения
eoln вне форума Ответить с цитированием
Старый 07.04.2012, 20:49   #3
eguana
 
Регистрация: 11.11.2008
Сообщений: 9
По умолчанию

На XP таких проблем небыло. Прописал даже батничек, который запускается прогу.

cd c:\Proga
start proge.exe

Все работало на ура никогда глюков не было. При старте проги. двумя способами определяю где папка GetCurrentDir и ExtractFilePath. Такая же байда. Стартуешь после загрузки винды все нормально. Через Shell не получается. Может из-за того что Explorer отключен?

Каким способом еще узнать имя текущей дирректории?
eguana вне форума Ответить с цитированием
Старый 07.04.2012, 20:57   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если нужно узнать каталог, в которм exe-шник находится, то, например, Application.Exename
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2012, 21:00   #5
eguana
 
Регистрация: 11.11.2008
Сообщений: 9
По умолчанию

А я по твоем как определяю ? ExtractFilePath('proga.exe');

После старта винды при нажатии на прогу все работет без проблем.
eguana вне форума Ответить с цитированием
Старый 07.04.2012, 21:03   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от eguana Посмотреть сообщение
А я по твоем как определяю ? ExtractFilePath('proga.exe');
Ну и что по вашему мнению ExtractFilePath('proga.exe') определяет? Справку почитайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2012, 21:10   #7
eguana
 
Регистрация: 11.11.2008
Сообщений: 9
По умолчанию

ExtractFilePath(Application.ExeName ) ну а как еще в с кобках тебе написал просто как прога называется


function ExtractFilePath(const FileName: string): string;
var
I: Integer;
begin
I := LastDelimiter(PathDelim + DriveDelim, FileName);
Result := Copy(FileName, 1, I);
end;

вот функция сама

может делать задержку. И траит путь пока нормальный не выйдет ?

Последний раз редактировалось eguana; 07.04.2012 в 21:15.
eguana вне форума Ответить с цитированием
Старый 07.04.2012, 21:23   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не пойму, что вам надо
ExtractFilePath(Application.ExeName ) - возвращает каталог, из которого запущена прога
GetCurrentDir - возвращает текущий каталог
Они не обязаны совпадать, ну и текущий каталог величина не постоянная, зависит от способа запуска проги и может меняться в процессе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2012, 21:27   #9
eguana
 
Регистрация: 11.11.2008
Сообщений: 9
По умолчанию

Мне надо чтобы ExtractFilePath(Application.ExeName ) работала при запуске винды. и выдала путь к проге, а не Windows System32 что она делает при первом запуске винды. Не знаю с чем это связано, но на хп такого не было. Единственно попробую прописать событие в OnActivate а не в OnCreate может поможет

Последний раз редактировалось eguana; 07.04.2012 в 21:30.
eguana вне форума Ответить с цитированием
Старый 07.04.2012, 21:29   #10
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от eguana Посмотреть сообщение
ExtractFilePath('proga.exe');
Весело.
Application.ExeName и 'proga.exe' вещи разные
Application.ExeName - это полный путь, иначе извлекать нечего!!!
Надо
Код:
Path := extractfilepath(paramstr(0))+'foldername\';
или
Код:
Path := extractfilepath(Application.ExeName)+'foldername\';
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GetCurrentDir для Windows 7 Vova777 Общие вопросы Delphi 12 25.08.2012 22:04
Проблемы из-за 7-ки? nimbus2000 Помощь студентам 4 09.02.2012 17:35
проблемы с IE Tradua HTML и CSS 1 05.08.2011 06:54
Проблемы с С# PDV199003 Помощь студентам 0 04.06.2010 14:38
проблемы с if Vergil Общие вопросы C/C++ 8 21.04.2010 21:43