Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-34406
Striker
2003-04-30 12:08
2003.05.12
как из listbox1 перенести выделеные строки в listbox2 ?


14-34563
KA-87
2003-04-20 21:11
2003.05.12
Где лучше хоститься?


7-34627
SergeyVasiljev
2003-03-18 18:18
2003.05.12
Как послать байт через переходник USB-LPT, при обращении к LPT?


1-34421
vvvaaa
2003-04-28 15:46
2003.05.12
Handle


7-34626
sergwolf
2003-03-18 20:06
2003.05.12
как программировать LPT порт ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский