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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.009 c
14-34556
Style
2003-04-23 10:16
2003.05.12
Конкурс на самый извратный Hello World :)


4-34638
[lamer]Barmaglot
2003-03-11 09:15
2003.05.12
LVM_SetItemcount


1-34500
anbezr
2003-04-28 13:23
2003.05.12
Недопустимый дескриптор окна


14-34543
Карлсон
2003-04-22 16:39
2003.05.12
FM Tuner


1-34495
region
2003-04-29 21:08
2003.05.12
транслитерация