![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с INI-файлами на API [D7, WinXP]
Dmitry_177 © (2006-11-03 19:00:00)Есть две функции для работы с ini-файлами
WritePrivateProfileString
GetPrivateProfileString
Но при каждом вызове одной из этих функций идет обращение к файлу, т.е. он каждый раз "ищется" на жестком диске... Наверно это немного тормозит процесс. А если нужно много настроек прочитать или считать? Каждый раз вызывать эти функции? Или надо еще как-то на API?
Есть еще функции
WriteProfileString
GetProfileString
Но они как я понял работают только с файлом WIN.INI..
Модуль TIniFiles не трогаем...
Орион (2006-11-04 08:40:00) [1]> Например если надо записать строку потом какоенибудь число,
> а потом например опять строку, вот как это дело все прочитать
> потом?
TMyData = record
DataType: Byte;
DataLen: Integer;
end;
Запись: Заполняешь структуру, записываешь ее, записываешь свои данные.
Чтение: читаешь из файла в структуру SizeOf(TMyData) байт, в зависимости от DataByte готовишь буфер, считываешь в него DataLen байт.
Германн (2006-11-04 01:55:00) [2]
> Dmitry_177 (04.11.06 01:34) [9]
>
> Ну то что реестр захламлять не следует я это знаю...)))
> А вот как писать в файл своего формата это уже интересно.
> ..))) если писать функцией WriteFile, как мне разделять
> значения, они же все в куче будут, бай за байтом, а вот
> как определять границу байтов кажного значения это мне не
> очень понятно... Например если надо записать строку потом
> какоенибудь число, а потом например опять строку, вот как
> это дело все прочитать потом?
>
А что WriteFile - это единственная функция записи в файл?
Write, Writeln, BlockWrite - тебе совсем не известны? Они, конечно, не из WinAPI, но и не тащут за собой VCL. А от модуля Systems отказаться ну очень сложно.
Dmitry_177 (2006-11-04 01:34:00) [3]Ну то что реестр захламлять не следует я это знаю...))) А вот как писать в файл своего формата это уже интересно...))) если писать функцией WriteFile, как мне разделять значения, они же все в куче будут, бай за байтом, а вот как определять границу байтов кажного значения это мне не очень понятно... Например если надо записать строку потом какоенибудь число, а потом например опять строку, вот как это дело все прочитать потом?
Германн (2006-11-04 00:50:00) [4]
> Dmitry_177 (03.11.06 21:01) [4]
>
> Я ради интереса спросил, ну например 20 параметров считать
> или записать, лучше будет этими функциями или еще какнибудь?
> Может открывать как текстовый или еще как? Вопрос в плане
> скорости... Ну и вообще как лучше )))
Можно открывать как хочешь, только зачем тогда ini-файлы пользовать? Пиши в файл своего формата. И второе, даже если будут советовать писАть не в ini-файл, а в реестр, пожалуйста не следуй этим советам! :-)
Орион (2006-11-03 23:04:00) [5]правильно понял :)
ну хочешь сам парсь, но это глупость.
Dmitry_177 (2006-11-03 22:22:00) [6]Я же писал без модуля IniFiles, только API... Т.е. я как понял только этими функциями на API если...
Орион (2006-11-03 22:02:00) [7]> [4] Dmitry_177 (03.11.06 21:01)
> или еще какнибудь?
TMemIniFile
Dmitry_177 (2006-11-03 21:01:00) [8]Я ради интереса спросил, ну например 20 параметров считать или записать, лучше будет этими функциями или еще какнибудь? Может открывать как текстовый или еще как? Вопрос в плане скорости... Ну и вообще как лучше )))
Орион (2006-11-03 20:41:00) [9]ничего там не "ищется".
> А если нужно много настроек прочитать или считать?
Много - это сколько?
Dmitry_177 (2006-11-03 19:59:00) [10]Я так думаю, по логике вроде как... разве не так?
Palladin (2006-11-03 19:21:00) [11]
> Но при каждом вызове одной из этих функций идет обращение
> к файлу, т.е. он каждый раз "ищется" на жестком диске...
свечку держал?