Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
ВнизКак создать ini файл в рабочей папке программы??? Найти похожие ветки
← →
@Lex (2002-09-01 00:23) [0]Как создать ini файл в рабочей папке программы???
А не в папке Windows???
← →
zzet (2002-09-01 00:40) [1]IniFile := TIniFile.Create(ChangeFileExt (Application.ExeName. ".ini"));
← →
@Lex (2002-09-01 00:44) [2]Спасибо огромное!!!
← →
@Lex (2002-09-01 22:34) [3]А как с произвольным именем файла?
← →
Юрий Зотов (2002-09-01 23:12) [4]> А как с произвольным именем файла?
Набираем ChangeFileExt. Жмем F1. Кликаем по линку:
Category
file name utilities
Смотрим на результат. Вау! Как много полезного-то...
Например, ExtractFilePath:
ExtractFilePath(Application.ExeName) + произвольное_имя_файла
← →
alena.svt (2002-09-01 23:28) [5]Не во
Ini := TIniFile.Create(IncludeTrailingBackSlash(ExtractFilePath(Application.ExeName))+"delphi32.ini");
← →
alena.svt (2002-09-01 23:30) [6]Шутка
← →
Юрий Зотов (2002-09-01 23:57) [7]IncludeTrailingBackSlash c ExtractFilePath - это и правда шутка.
Вот с ExtractFileDir было бы не лишним.
← →
alena.svt (2002-09-02 06:56) [8]Да просто люди факи смотрят хелп жмут книги читают.
А тут такие вопросы. Наверное по принципу "пусть лошадь думает у нее голова большая"
← →
Reindeer Moss Eater (2002-09-02 08:45) [9]ExpandFileName("MyIniFile.ini");
← →
Юрий Зотов (2002-09-02 08:52) [10]> Reindeer Moss Eater (02.09.02 08:45)
И где же потом его искать?
← →
Reindeer Moss Eater (2002-09-02 08:53) [11]>Юрий Зотов ©
В текущем его потом искать
← →
Reindeer Moss Eater (2002-09-02 08:55) [12]Кроме того, искать его вообще не надо, так как функция возвращает полный путь
← →
Юрий Зотов (2002-09-02 08:56) [13]А в КАКОМ текущем?
Который текущий сейчас, во время поиска?
Или в том, который был текущим неделю назад, когда его сохраняли?
← →
Юрий Зотов (2002-09-02 08:57) [14]> функция возвращает полный путь
Угу. Вот только путь КУДА?
← →
Reindeer Moss Eater (2002-09-02 09:18) [15]>Юрий Зотов ©
Если автор вопроса хочет создать ini не там где это делается по умолчанию, а в каталоге программы, то, я полагаю, он знает что делает и искать свой файл через неделю не станет, а просто запомнит путь к нему.
← →
Anatoly Podgoretsky (2002-09-02 09:25) [16]Только это ExpandFileName("MyIniFile.ini") даст путь где там на Марсе
← →
Reindeer Moss Eater (2002-09-02 09:33) [17]ExpandFileName("MyIniFile.ini");
Вернет полный путь к MyIniFile.ini как если бы он находился в текущем каталоге процесса. Если процесс запущен в каталоге c:\Mars, то функция вернет c:\Mars\MyIniFile.ini
← →
Юрий Зотов (2002-09-02 09:47) [18]> Если процесс запущен в каталоге 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:53) [19]>Юрий Зотов ©
Включите опцию ofNoChangeDir в список опций OpenDialod1 и можете сами гонять программку хоть до пенсии.
Результат будет всегда один и тот же
← →
Юрий Зотов (2002-09-02 10:11) [20]Угу. То есть - напрочь запретить юзеру сохранять его рабочие файлы там, где ему нравится. Нечего его баловать! Путь работает с каталогом Exe. До пенсии!
Отличное предложение, что и говорить.
И, кроме того, разве диалоги - это единственный способ смены текущего каталога? Например, а как Вы запретите юзеру создавать ярлыки к Вашей программе и прописывать в них ЛЮБЫЕ стартовые каталоги? Да еще и десяток разных каталогов в десятке разных ярлыков (а вдруг ему так захочется?).
Никак не запретите. А бедная программа будет судорожно открывать файл, которого нет.
← →
Song (2002-09-02 10:15) [21]2Юрий Зотов © (02.09.02 10:11)
Если включить опцию ofNoChangeDir файлы юзер может сохранять где угодно, просто текущий каталог работы программы не будет меняться на тот, в котором юзер последний раз сохранил файл. Кстати, очень отличная фишка.
← →
Reindeer Moss Eater (2002-09-02 10:17) [22]>Юрий Зотов ©
Бростье вы, я же не про это. Юзер волен делать все что хочет. А разработчик, если хочет иметь ini в нестандартном месте, должен помнить это место. И все.
← →
Юрий Зотов (2002-09-02 10:19) [23]Не знал. По этому поводу неправ. Век живи - век учись.
А как насчет ярлыков? Тем более, с ofNoChangeDir?
← →
Юрий Зотов (2002-09-02 10:24) [24]> должен помнить это место
А где его помнить? В том же INI? Но это замкнутый круг. В реестре? Тогда какой смысл использовать INI-файл?
И главное - а зачем его помнить? ExeName и так всегда его дает, без всяких запоминаний.
Просто не надо привязываться к текущему каталогу. Вот и все проблемы.
← →
Сергей Медяник_ (2002-09-02 20:02) [25]Всегда использую:
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)) всегда завершается "\".
← →
Anatoly Podgoretsky (2002-09-02 20:20) [26]Я должен извиниться перед Reindeer Moss Eater, так как автор вообще то хотел в текущем, если конечно не ошибся с вопросом, только это делать надо сразу, лучше в dpr
"Как создать ini файл в рабочей папке программы"
Меня то же в заблуждение ввел стереотип. Прошу прощения
← →
@Lex (2002-09-02 21:49) [27]Всем еще раз огромное спасибо!!!
← →
@Lex (2002-09-02 21:55) [28]Под рабочей папкой я имел в виду
место откуда запускается EXE файл.
Извините если не правильно задал вопрос.
← →
Фдуыышщ18 (2002-09-02 22:31) [29]var Config:TIniFile;
begin
Config:=TIniFile.Create(ExtractFilePath(Application.ExeName)+"\Имя.ini");
Config.Free;
end;
← →
Ahmad (2002-09-02 23:49) [30]>НАРОД!
А НЕ ЛЕГЧЕ:
Ini := TIniFile.Create(ChangeFileExt(ParamStr(0),".INI"));
именем файа будет имя проги, если так оставить
← →
@Lex (2002-09-04 21:28) [31]>zzet © (01.09.02 00:40)
>IniFile := TIniFile.Create(ChangeFileExt
>(Application.ExeName. ".ini")); !!!
Спасибо всем!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.009 c