Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: CL | DM;

Вниз

Как создать 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.014 c
4-51034
Shur_ap
2002-07-23 21:52
2002.09.16
Обновить tray


1-50708
Сергей Нечепуренко
2002-09-05 12:15
2002.09.16
Как узнать дату создания файла на диске?


14-50944
Malder
2002-08-20 22:18
2002.09.16
AudioGalaxy - был шедевром


14-50918
KLEVO
2002-08-17 10:23
2002.09.16
А есть ли ...


1-50804
Z:TCFV
2002-09-03 17:28
2002.09.16
HElp