Форум: "Потрепаться";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
ВнизDLL для работы с .ini-файлами. Найти похожие ветки
← →
panov (2003-04-23 21:56) [0]Если у кого есть время и желание протестить DLL-ку(с исходниками) для работы с ini-файлами, буду благодарен...
На досуге тренировался немного...
http://home.ural.ru/~panov
← →
SPeller (2003-04-24 00:46) [1]Библиотеку не тестил, пока просто просмотрел код. Самое первое замечание - нет функций чтения/записи двоичных данных. Иногда вещь нужная.
← →
VaS (2003-04-24 08:50) [2]Дааа, такого я еще не видел:
case aBool of
True: Result := "1";
False: Result := "0";
end;
Про ChangeFileExt() мы не слышали:
function GetIniName: ShortString;stdcall;
var
Buffer: array[0..255] of Char;
p: PChar;
begin
Result := "";
if GetModuleFileName(0, Buffer, SizeOf(Buffer))=0 then Exit;
p := @Buffer[0];
while (p-Buffer<255) do
begin
if p^<>#0 then Inc(p) else break;
end;
if p-Buffer=255 then Exit;
Dec(p);
p^ := "i";
(p-1)^ := "n";
(p-2)^ := "i";
while p^<>"\" do
begin
Result := p^+Result;
Dec(p);
end;
end;
Впрочем ка и про ExtractFilePath()... Ну ничего, ты, главное, не сдавайся...
← →
evvcom (2003-04-24 09:39) [3]Конструкцию
case aBool of
True: Result := "1";
False: Result := "0";
end;
можно записать проще так:
Result := IntToStr(Integer(aBool))
хотя может и не стоит это к тексту приводить? (исходники не смотрел)
← →
Крот (2003-04-24 09:40) [4]
> VaS © (24.04.03 08:50)
К проекту не подключен модуль SysUtils, (ясное дело, что-бы размер уменьшить), поэтому и пришлось писать свои эквиваленты ExtractFilePath и ChangeFileExt. Подключать SysUtils только из-за этих функций не имеет смысла.
P.S. Щас скажуть, что личная переписка :-)
← →
REA (2003-04-24 11:07) [5]А в чем суть то? Зачем для работы с INI отдельная DLL?
← →
panov (2003-04-24 11:21) [6]>VaS © (24.04.03 08:50)
Про ChangeFileExt() и ChangeFilePath см. Крот © (24.04.03 09:40)
Кроме этого и возведение в степень тоже пришлось самому написать.
>REA
Отдельная DLL - первая попытка избавиться от дополнительно подключаемого модуля inifiles.pas, с целью немного уменьшить выполняемый модуль и для более удобной работы с .INI-файлами.
При работе с TIniFIle придется либо каждый раз при необходимости вызывать TIniFile.Cretate, причем каждый раз получать имя ini-файла, либо использовать глобальную переменную, что кажется мне некрасивым.
← →
REA (2003-04-24 11:25) [7]По-моему проблема надумана, тем более, что большинство данных уже можно в реестре хранить. Единственное неудобство, то что плавающая точка пишется как "," например, а читаться уже будет как точка. Или наоборот.
← →
panov (2003-04-24 11:30) [8]>REA © (24.04.03 11:25)
Реестр - неудачное место хранения данных, если программу нужно перенести на другой ПК, к тому же я, например, не люблю, когда некие программы загаживают реестр, только при необходимости терплю такое. хотя и большинство программ так делает.
>SPeller © (24.04.03 00:46)
А какие двоичные данные, например, можно хранить в ini-файле и для чего?
← →
vopros (2003-04-24 11:39) [9]У меня в этой ветке завис Explorer.Вирус?
← →
Игорь Шевченко (2003-04-24 11:41) [10]Для работы с ini-файлами уже есть DLL, называется KERNEL32.DLL
;-)
← →
panov (2003-04-24 11:41) [11]>vopros © (24.04.03 11:39)
гы-гы-гы
← →
panov (2003-04-24 12:18) [12]>Игорь Шевченко © (24.04.03 11:41)
kernel32.dll не учел-)
а в w2000 и XP сохранились в ядре эти функции, интересно?
← →
panov (2003-04-24 12:19) [13]>VaS © (24.04.03 08:50)
Если не удосужился вдуматься в то, что тебе предложили посмотреть, то нечегоизображать из себя супер-пупер знатока-))
← →
Игорь Шевченко (2003-04-24 12:47) [14]panov © (24.04.03 12:18)
> а в w2000 и XP сохранились в ядре эти функции, интересно?
Конечно. Но к ядру они отношения не имеют, так как вся работа с ini-файлами осуществляется на пользовательском уровне.
Get[Private]ProfileXXXXX
и
Write[Private]ProfileXXXX
← →
panov (2003-04-24 12:54) [15]>Игорь Шевченко © (24.04.03 12:47)
Ну что же, придется обернуть их в DLL-ку... Проще будет.
← →
Игорь Шевченко (2003-04-24 12:58) [16]panov © (24.04.03 12:54)
> Ну что же, придется обернуть их в DLL-ку... Проще будет.
Удачи ;-)
← →
REA (2003-04-24 13:06) [17]ИМХО тогда лучше в Unit обернуть или компонент. Получится наверно TIniFile.
← →
panov (2003-04-24 13:13) [18]А разве для стандартных функций из KERNEL32.DLL нет ограничения на размер файла или секции?
Почему-то мне кажется, что объем ограничен 32К.
← →
REA (2003-04-24 13:14) [19]Есть такое. Но зачем столько настроек?
← →
Игорь Шевченко (2003-04-24 13:19) [20]panov © (24.04.03 13:13)
64K для Win9x, для NT-подобных систем ограничения нету.
← →
Adder (2003-04-24 13:26) [21]2 Panov
Хмм.... лучше бы посуду помыл Ж8-Р
← →
panov (2003-04-24 13:27) [22]>Adder © (24.04.03 13:26)
ррррррррррр
← →
panov (2003-04-24 13:32) [23]>REA © (24.04.03 13:06)
>ИМХО тогда лучше в Unit обернуть или компонент. Получится наверно >TIniFile.
Если unit или компонент, то опять же все функции подлинкуются в исполняемый модуль.
А дополнительный unit - ini.pas специально сделан для удобного динамического подключения библиотеки и использования функций...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c