Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-50740
Borys
2002-09-02 19:07
2002.09.16
Видимость переменных


1-50710
Сергей Нечепуренко
2002-09-05 11:20
2002.09.16
Как запустить из программы другой exe файл?


1-50715
cher_gvf
2002-09-05 12:50
2002.09.16
Оформляем красиво


3-50619
Igoryan
2002-08-26 17:40
2002.09.16
Работа С ODBC


1-50700
Евгений Дем.
2002-08-31 11:33
2002.09.16
Как перехватить нажатие кнопки Windows и M





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский