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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2009, 20:42   #1
Vol666
Гуру Разврата
Форумчанин
 
Аватар для Vol666
 
Регистрация: 29.07.2009
Сообщений: 373
Смущение Как програмно можно узнать где находится программа

Вообщем мне необходимо работать со стороними файлами которые должны находится в папке с программой. Как вы поняли соль в том, что папка перемещается, что не даёт прописывать постоянные адреса к файлам. Можно ли как нибудь решить эту проблему? Заранее большое спасибо...
Фредди вернулся))) И Готов Убивать!!!
Vol666 вне форума Ответить с цитированием
Старый 29.07.2009, 20:47   #2
Adler
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 19
По умолчанию

ExtractFileDir(ParamStr(0))
Adler вне форума Ответить с цитированием
Старый 29.07.2009, 20:51   #3
Vol666
Гуру Разврата
Форумчанин
 
Аватар для Vol666
 
Регистрация: 29.07.2009
Сообщений: 373
Смущение

ExtractFileDir(ParamStr(0))
А в скобках, это переменная или что?
Если можно поясните или дайте в примере.
Фредди вернулся))) И Готов Убивать!!!
Vol666 вне форума Ответить с цитированием
Старый 29.07.2009, 21:18   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

В данном случае
Код:
ParamStr(0);
Это функция, которая возвращает полный путь к программе. Аналогично как
Код:
Application.ExeName
К примеру:
Код:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Edit1.Text:=ParamStr(0);
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 29.07.2009, 21:20   #5
Mr.Qwerty
Что? Где? Когда?
Форумчанин
 
Аватар для Mr.Qwerty
 
Регистрация: 14.07.2009
Сообщений: 220
Радость

Цитата:
ExtractFileDir(ParamStr(0))
ExtractFileDir(paramstr(0)) // ВАЖНО !!!!!!! имя директории надо указать в дос формате.
Есть еще 2 способа:
1)
Цитата:
procedure ...;
var
FileToFind: string;
y, iT: Integer;
sRec: TSearchRec;
Li: TStringList;
begin
Li := TStringList.Create;
MessageDlg(ExtractFileDir(Applicati on.ExeName), mtWarning, [mbOK], 0);
y := FindFirst(ExtractFileDir(Applicatio n.ExeName) + '\*.*', faDirectory, sRec);
while (y = 0) do
begin
Li.Add(ExtractFileDir(Application.E xeName) + '\' + sRec.Name);
y := FindNext(sRec);
end;
for
iT := 0 to Li.Count - 1 do
begin
FileToFind := FileToFind + Li[iT] + #13 + #10;
end;

Li.Free;
MessageDlg(FileToFind, mtWarning, [mbOK], 0);
end;
2)
Цитата:
try
SetErrorMode(SEM_FAILCRITICALERRORS );
FindHandle := FindFirstFileW(PWideChar(ExtractFil ePath(Application.ExeName)) + '\*.*'), FindData);
if FindHandle <> INVALID_HANDLE_VALUE then
begin
try
repeat

with FindData do
begin
// че надо и куда надо пишем
end;
until not FindNextFileW(FindHandle, FindData);
finally
Windows.FindClose(FindHandle);
end;
end

else begin
ShowMessage('Can''t read directory');
end;
finally

SetErrorMode(0);
end;
© Copyright Mishgan & LadyOfWood
http://forums.realcoding.net/lofiver....php/t709.html
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Mr.Qwerty вне форума Ответить с цитированием
Старый 29.07.2009, 22:21   #6
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Существуют два основных способа:

ParamStr(0) и Application.ExeName.... Собствено про них уже сказали.

И ничего не надо придумывать
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 29.07.2009, 22:52   #7
Vol666
Гуру Разврата
Форумчанин
 
Аватар для Vol666
 
Регистрация: 29.07.2009
Сообщений: 373
Подмигивание Всем спасибо, проблема решена!

Используя ваши примеры я сделал вот это:
var
Dir: string;
begin
Dir:=ExtractFileDir(ParamStr(0));
Memo1.Lines.LoadFromFile(dir+'\xxx. txt');
end;

немного варварски, но работает. Ещё раз всем спасибо!
Фредди вернулся))) И Готов Убивать!!!

Последний раз редактировалось Vol666; 29.07.2009 в 22:53. Причина: :)
Vol666 вне форума Ответить с цитированием
Старый 29.07.2009, 23:10   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Код:
begin
Memo1.Lines.LoadFromFile(ExtractFileDir(ParamStr(0))+'\xxx. txt');
end;
psycho-coder вне форума Ответить с цитированием
Старый 30.07.2009, 01:05   #9
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Код:
ExtractFilePath(Application.ExeName)+'xxx. txt'
Black Fregat вне форума Ответить с цитированием
Старый 30.07.2009, 01:08   #10
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
со стороними файлами которые должны находится в папке с программой
А надо ли вообще узнавать, где находится программа..?
Делфи же понимает относительные пути...
Код:
Memo1.Lines.LoadFromFile('xxx.txt');
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать HANDLE компонента который находится под курсором мыши SeRhy Общие вопросы Delphi 7 04.02.2009 20:39
Как узнать находится ли точка в конкретной треугольной области? Dux Общие вопросы Delphi 8 07.12.2008 19:32
Как в TWebBrowser узнать адрес ссылки которая находится под курсором мышки SeRhy Общие вопросы Delphi 0 10.08.2008 10:11
Как узнать в Делфи координаты в котором находится курсор мыши? SVS Win Api 3 08.02.2007 13:34
RichEdit. как можно вставлять картинку туда? как можно Скрол програмно вниз двигать? Svop Компоненты Delphi 7 28.11.2006 21:07