Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как создать ini файл в рабочей папке программы??? [D6, WinXP]


Страницы:   1 2

@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]

Кроме того, искать его вообще не надо, так как функция возвращает полный путь


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо