![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать ini файл в рабочей папке программы??? [D6, WinXP]
@Lex © (2002-09-01 00:23:00)Как создать ini файл в рабочей папкепрограммы???
А не в папке Windows???
@Lex (2002-09-04 21:28:00) [1]>zzet © (01.09.02 00:40)
>IniFile := TIniFile.Create(ChangeFileExt
>(Application.ExeName. ".ini")); !!!
Спасибо всем!
Ahmad (2002-09-02 23:49:00) [2]>НАРОД!
А НЕ ЛЕГЧЕ:
Ini := TIniFile.Create(ChangeFileExt(ParamStr(0),".INI"));
именем файа будет имя проги, если так оставить
Фдуыышщ18 (2002-09-02 22:31:00) [3]var Config:TIniFile;
begin
Config:=TIniFile.Create(ExtractFilePath(Application.ExeName)+"\Имя.ini");
Config.Free;
end;
@Lex (2002-09-02 21:55:00) [4]Под рабочей папкойя имел в виду
место откуда запускается EXE файл.
Извините если не правильно задал вопрос.
@Lex (2002-09-02 21:49:00) [5]Всем еще раз огромное спасибо!!!
Anatoly Podgoretsky (2002-09-02 20:20:00) [6]Я должен извиниться перед Reindeer Moss Eater, так как автор вообще то хотел в текущем, если конечно не ошибся с вопросом, только это делать надо сразу, лучше в dpr
"Как создать ini файл в рабочейпапке программы"
Меня то же в заблуждение ввел стереотип. Прошу прощения
Сергей Медяник_ (2002-09-02 20:02:00) [7]Всегда использую:
uses INIFiles;
...
var
MyINI :TINIFile;
...
begin
MyINI:=TINIFile.Create(ExtractFilePath(ParamStr(0))+"My ini File.ini");
...
end;
Совет: в главной форме объяви строковую переменну вроде RootAppDir, потом в OnCreate выполни
RootAppDir:=ExtractFilePath(ParamStr(0));
Иногда приходиться не только один файл из папки программы читать, а например в подкаталогах вроде RootAppDir+"DATA\xxx.jpg".
ExtractFilePath(ParamStr(0)) всегда завершается "\".
Юрий Зотов (2002-09-02 10:24:00) [8]> должен помнить это место
А где его помнить? В том же INI? Но это замкнутый круг. В реестре? Тогда какой смысл использовать INI-файл?
И главное - а зачем его помнить? ExeName и так всегда его дает, без всяких запоминаний.
Просто не надо привязываться к текущему каталогу. Вот и все проблемы.
Юрий Зотов (2002-09-02 10:19:00) [9]Не знал. По этому поводу неправ. Век живи - век учись.
А как насчет ярлыков? Тем более, с ofNoChangeDir?
Reindeer Moss Eater (2002-09-02 10:17:00) [10]>Юрий Зотов ©
Бростье вы, я же не про это. Юзер волен делать все что хочет. А разработчик, если хочет иметь ini в нестандартном месте, должен помнить это место. И все.
Song (2002-09-02 10:15:00) [11]2Юрий Зотов © (02.09.02 10:11)
Если включить опцию ofNoChangeDir файлы юзер может сохранять где угодно, просто текущий каталог работы программы не будет меняться на тот, в котором юзер последний раз сохранил файл. Кстати, очень отличная фишка.
Юрий Зотов (2002-09-02 10:11:00) [12]Угу. То есть - напрочь запретить юзеру сохранять его рабочие файлы там, где ему нравится. Нечего его баловать! Путь работает с каталогом Exe. До пенсии!
Отличное предложение, что и говорить.
И, кроме того, разве диалоги - это единственный способ смены текущего каталога? Например, а как Вы запретите юзеру создавать ярлыки к Вашей программе и прописывать в них ЛЮБЫЕ стартовые каталоги? Да еще и десяток разных каталогов в десятке разных ярлыков (а вдруг ему так захочется?).
Никак не запретите. А бедная программа будет судорожно открывать файл, которого нет.
Reindeer Moss Eater (2002-09-02 09:53:00) [13]>Юрий Зотов ©
Включите опцию ofNoChangeDir в список опций OpenDialod1 и можете сами гонять программку хоть до пенсии.
Результат будет всегда один и тот же
Юрий Зотов (2002-09-02 09:47:00) [14]> Если процесс запущен в каталоге c:\Mars, то функция вернет
> c:\Mars\MyIniFile.ini
Нет, не вернет. Вернее, может вернуть, а может и не вернуть.
Погоняйте вот эту программку - исчезнут все заблуждения.
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := GetCurrentDir
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then Caption := GetCurrentDir
end;
Reindeer Moss Eater (2002-09-02 09:33:00) [15]ExpandFileName("MyIniFile.ini");
Вернет полный путь к MyIniFile.ini как если бы он находился в текущем каталоге процесса. Если процесс запущен в каталоге c:\Mars, то функция вернет c:\Mars\MyIniFile.ini
Anatoly Podgoretsky (2002-09-02 09:25:00) [16]Только это ExpandFileName("MyIniFile.ini") даст путь где там на Марсе
Reindeer Moss Eater (2002-09-02 09:18:00) [17]>Юрий Зотов ©
Если автор вопроса хочет создать ini не там где это делается по умолчанию, а в каталоге программы, то, я полагаю, он знает что делает и искать свой файл через неделю не станет, а просто запомнит путь к нему.
Юрий Зотов (2002-09-02 08:57:00) [18]> функция возвращает полный путь
Угу. Вот только путь КУДА?
Юрий Зотов (2002-09-02 08:56:00) [19]А в КАКОМ текущем?
Который текущий сейчас, во время поиска?
Или в том, который был текущим неделю назад, когда его сохраняли?
Reindeer Moss Eater (2002-09-02 08:55:00) [20]Кроме того, искать его вообще не надо, так как функция возвращает полный путь