Форум: "Основная";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизСохранение *.Ini в том жэ каталоге, где находится сама программа Найти похожие ветки
← →
Delphin (2003-06-16 14:13) [0]Доброго времени суток, народ, такая проблема: как мне сохранить *.Ini файл в том жэ каталоге, где находится сама программа?
← →
Andrews (2003-06-16 14:22) [1]var
CDBEditorIni : TIniFile;
IniFileName : String; //Имя ини-файла
begin
IniFileName := ExtractFileDir(ParamStr(0)) + "\CDB_Editor.ini";
CDBEditorIni := TIniFile.Create(IniFileName);
CDBEditorIni.WriteInteger("Position", "MainForm.Height",MainForm.Height);
...
end;
← →
Palladin (2003-06-16 14:23) [2]тэбэ, дарагой, надо явно указать этот каталог при создании TIniFile
← →
sergey2 (2003-06-16 14:29) [3]Пока делаю так: определяю путь где находится прога и к ini файлу обращаюсь с использованием этого пути.
Но твой вопрос меня тоже интересует.
И вообще, если не указывать путь, то какой путь используется по умолчанию?
← →
Delphin (2003-06-16 14:30) [4]Спасибо =)
← →
Delphin (2003-06-16 14:32) [5]>> То sergey2 <<
Не уверен, но по умолчанию используеться C:/Windows
← →
sergey2 (2003-06-16 14:37) [6]Хм. Пока писал, тут уже куча ответов есть. :)
Значит все-таки нужно определять где находится прога и использовать этот путь? Думал что может есть вариант по-проще...
← →
Andrews (2003-06-16 14:42) [7]>> sergey2 (16.06.03 14:37)
Значит все-таки нужно определять где находится прога и использовать этот путь? Думал что может есть вариант по-проще...
IniFileName := ExtractFileDir(ParamStr(0)) + "myini.ini"; //очень сложный код...
да уж...
← →
sergey2 (2003-06-16 14:58) [8]да нет, не сложный. Просто я пользовался именно таким способом, но мне все время казалось что я что-то не так делаю или чего-то не знаю. Наверное просто была навязчивая идея. :(
← →
Opera (2003-06-16 15:39) [9]var
f:textfile;
begin
AssignFile(f, "*.ini");
Rewrite(f);
CloseFile(f);
← →
panov (2003-06-16 18:37) [10]
function IniName:String;
var
Len: Integer;
begin
Result := ParamStr(0);
Len := Length(Result);
Result[Len] := "i";
Result[Len-1] := "n";
Result[Len-2] := "i";
end;
← →
mrcat (2003-06-16 19:28) [11]>panov © (16.06.03 18:37)
оригинально :)
← →
Юрий Зотов (2003-06-16 19:34) [12]> panov © (16.06.03 18:37)
Result := ChangeFileExt(ParamStr(0), ".ini");
Пожалуй, попроще...
:о)
← →
Anatoly Podgoretsky (2003-06-16 21:00) [13]А система то ХР это означает, что сия операция как правило разрешена только администратору, если конечно права не изменены.
← →
panov (2003-06-16 21:25) [14]>mrcat © (16.06.03 19:28)
>Юрий Зотов © (16.06.03 19:34)
Функция специально сделана для использования в DLL, поэтому и такой метод - без использования SysUtils
-)
← →
Vladymir (2003-06-18 23:32) [15]А ваще-то прг по умолчанию пишет в свой каталог "любой.ini".
А dll можно тоже в каталог программы поместить. А каталог разрешить на запись Guest"у. А вообще-то и проблемы вроде нет...
← →
Palladin (2003-06-19 00:28) [16]
> Vladymir (18.06.03 23:32)
Вы такой опытный разработчик, от Вас так и прет опытом
← →
iFot (2003-06-19 02:32) [17]А такой способ:
var
IniFile:TINIFile;
begin
IniFile:=TINIFile.Create(ExtractFilePath(Application.ExeName)+"sample.ini");
....
IniFile.Free;
end.
Если у него есть какие-нибудь недостатки в отличии от других - объясните, плз, новичку.
← →
Armen (2003-06-19 02:39) [18]IniFile:=TINIFile.Create("./inifilename");
начиная с текущего каталога
← →
Rol (2003-06-19 07:49) [19]Удалено модератором
← →
Palladin (2003-06-19 08:30) [20]
> iFot © (19.06.03 02:32)
недостаток есть, Application есть не в каждой программе
IniFile:=TINIFile.Create(ExtractFilePath(ParamStr(0))+"sample.ini");
← →
iFot (2003-06-19 12:42) [21]//Palladin ©
Спасибо, понял
← →
vv3 (2003-06-20 03:17) [22]>>Palladin (19.06.03 00:28)
procedure Palladin;
var F: TMemIniFile; SL: TStringList;
begin
Sl:= TStringList.Create;
Sl.Clear;
Sl.LoadFromFile("aga.ini");
f:= TMemIniFile.Create("aga.ini");
f.SetStrings(SL);
f.WriteString("Наш ответ Чемберлену", "Palladin", "Вы такой опытный разработчик..");
f.GetStrings(SL);
f.Free;
SL.SaveToFile("aga.ini");
SL.Free;
end;
← →
Palladin (2003-06-20 08:42) [23]
> vv3 © (20.06.03 03:17)
Да Вы я смотрю вообще опытный...
а если я запущу Ваш код с текущей директорией c:\temp\?
где по Вашему ini файл создастся?
И не надо заниматся извратом...
← →
Palladin (2003-06-20 08:51) [24]
> Vladymir (18.06.03 23:32)
Note: Typically, INI files are stored in the \WINDOWS directory or the application’s directory. To work with an INI file in another location, specify the full path name of the file in FileName.
← →
FoxBox (2003-06-20 09:42) [25]Чтобы избежать проблем с доступом к каталогу,
используй реестр (объект TRegIniFile).
То же самое, что и TIniFile, только пишется в
реестр. Как работать - читай хелпер
← →
Nucl (2003-06-20 09:43) [26]var Path : string;
Path := ExtractFilePath(Application.ExeName);
добавляеш имя ини файла
и сохраняешь.
← →
Vladislav (2003-06-20 10:37) [27]Есть один косяк в вышеописанных методах. Раньше я сам пользовался
Path := ExtractFilePath(Application.ExeName),
пока не наступил на грабли, если вызываешь свою пргу как OLE-сервер.
Рабочий каталог в это случае Windows (или W/System) и есть параметр-Embedding
В следствии чего приучил себя делать так:
var P: array[ 0..MAX_PATH-1 ] of Сhar;
Path: string;
begin
SetString( Path, P, GetModuleFileName( hInstance, SP, SizeOf( P )));
Path := ExtractFilePath( Path );
end;
Может кому-то и покажется, что мутно, но меня пока не подводило.
← →
Palladin (2003-06-20 10:41) [28]
> Vladislav © (20.06.03 10:37)
function ParamStr(Index: Integer): string;
{$IFDEF MSWINDOWS}
var
P: PChar;
Buffer: array[0..260] of Char;
begin
Result := "";
if Index = 0 then
SetString(Result, Buffer, GetModuleFileName(0, Buffer, SizeOf(Buffer)))
else
begin
P := GetCommandLine;
while True do
begin
P := GetParamStr(P, Result);
if (Index = 0) or (Result = "") then Break;
Dec(Index);
end;
end;
{$ENDIF}
{$IFDEF LINUX}
begin
if Index < ArgCount then
Result := PCharArray(ArgValues^)[Index]
else
Result := "";
{$ENDIF}
end;
← →
panov (2003-06-20 10:41) [29]>FoxBox (20.06.03 09:42)
Чтобы избежать проблем с доступом к каталогу,
используй реестр (объект TRegIniFile).
Вот так и пишутся программы, которые потом проклинают пользователи - после того, как они реестр весь загадят.
← →
Palladin (2003-06-20 10:48) [30]
> Palladin © (20.06.03 10:41)
не обращайте внимания, ступил...
← →
Sliski Slimak (2003-06-20 22:30) [31]а если ини валяется в папке с программой, и она автозапускается из реестра, тогда что? прога вылетает с ошибкой- не найден файл....
← →
Sha (2003-06-20 23:25) [32]Sliski Slimak (20.06.03 22:30)
указывай полный путь
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.025 c