Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

трабла с ИНИ-файлами. [D7, WinXP]


Страницы:   1 2

Magic_STI ©   (2004-07-26 15:44:00) 

У меня прога создает довольно большой ИНИ-файл (около 1 Мб). Создается вроде нормально. Проверял блокнотом, вся инфа есть. А при чтении количество прочитанных секций оказывается гораздо меньше их реального количества. В чем дело? Может есть какое-то ограничение на размер. Если есть, то как его обойти? Заранее благодарен...


Anatoly Podgoretsky   (2004-07-26 16:31:00) [21]

Выписка их справки
The GetPrivateProfileString function retrieves a string from the specified section in an initialization file. This function is provided for compatibility with 16-bit Windows-based applications. Win32-based applications should store initialization information in the registry.

Именно эти вызовы и используются в VCL


Ega23   (2004-07-26 16:26:00) [22]

2 KSergey ©   (26.07.04 16:21) [16]

Автор ветки в посте [4] написал:
Пытался делать нетипизированный файл. С ним возникли проблемы, поэтому забросил эту затею.
У меня сразу же возникло подозрение, что это было из-за неуказания длины строки.


Ega23   (2004-07-26 16:22:00) [23]

В том то и прикол, что текст длиннее чем 255 символов. Такого вида записи я бы и сам сделал...

Читай про TClientDataSet.


KSergey   (2004-07-26 16:21:00) [24]

> [9] Ega23 ©   (26.07.04 16:11)

ну, признаться я не особо силен  в форматировании строк для Writeln/Readln. Судя по справке - не особо там гибко. Думал, что аналогично сишным printf/?... опа, забыл :(( Ну все поняли. (Позор моим сединам.)

Ну тогда формировать строку ручками (или через Format) с разделителями (строки в кавычки или сначала прописывать длину), а вот обратную ф-цию для "расшифровки", аналогично Format - что-то я не нашел.


Ega23   (2004-07-26 16:21:00) [25]

2 Anatoly Podgoretsky ©   (26.07.04 16:16) [12]
2 ssk ©   (26.07.04 16:16) [13]

Просто лично мне никогда не попадалось такое. Да и работу с ini я по хелпу к Delphi осваивал. А там этого почему-то не сказано.
Буду знать.


Magic_STI   (2004-07-26 16:18:00) [26]

В том то и прикол, что текст длиннее чем 255 символов. Такого вида записи я бы и сам сделал...


ssk   (2004-07-26 16:16:00) [27]

>Ega23 ©   (26.07.04 15:54) [3]

2 ssk ©  
Точно? Откуда информация?


здесь об этом можно прочесть
http://www.osp.ru/fullpc/10/10.htm

но это не докуметация, а просто очерк по настройке Вин98


Anatoly Podgoretsky   (2004-07-26 16:16:00) [28]

Ega23 ©   (26.07.04 15:54) [3]
Из спецификации Микрософта


Magic_STI   (2004-07-26 16:14:00) [29]

Либо я буду пытаться что-то сделать с ИНИ, либо подскажите как хранить все это добро в нетипизированном файле. В обычный текстовый я скидывать не хочу, т.к. ч ним много мороки.


Digitman   (2004-07-26 16:13:00) [30]


> Нужно сохранить неограниченное количество записей вида
> TMyRec = record
>         head:string;
>         fontsize:integer;
>         text:string;
>         end;


СУБД


Ega23   (2004-07-26 16:11:00) [31]

Writeln/Readln?

Если строка не имеет определённой длины, то это проблематично будет.
Если указать
TMyRec = record
        head:string[20];
        fontsize:integer;
        text:string[255];
        end;

тогда читаться всё будет хорошо, но будет храниться ненужная информация.


Fay   (2004-07-26 16:09:00) [32]

Храни в XML. К примеру.


KSergey   (2004-07-26 16:07:00) [33]

>  [4] Magic_STI   (26.07.04 15:58)
> Подскажи как? Нужно сохранить неограниченное количество
> записей вида
> TMyRec = record
>         head:string;
>         fontsize:integer;
>         text:string;
>         end;
> В принципе текст можно не в виде строки. Главное, чтобы
> он нормально потом читался.

Writeln/Readln?


Ega23   (2004-07-26 16:06:00) [34]

Magic_STI   (26.07.04 15:58) [4]

1. Подцепи БД из одной таблички.
2. Используй для этого TClientDataSet.LoadFrom(SaveTo)File
3. Используй обычный текстовый файл, но между рекордами нужен какой-то разделитель.

Я бы воспоьлзовался 2-м способом.


Magic_STI   (2004-07-26 16:01:00) [35]

Секции точно не одинаковые.


Magic_STI   (2004-07-26 15:58:00) [36]

Подскажи как? Нужно сохранить неограниченное количество записей вида
TMyRec = record
        head:string;
        fontsize:integer;
        text:string;
        end;
В принципе текст можно не в виде строки. Главное, чтобы он нормально потом читался.
Пытался делать нетипизированный файл. С ним возникли проблемы, поэтому забросил эту затею.
Может че подскажете?


Ega23   (2004-07-26 15:54:00) [37]

2 Magic_STI
Проверь названия секций на "одинаковость". Может у тебя одно и то же имя несколько раз встречается...

2 ssk ©  
Точно? Откуда информация?


ssk   (2004-07-26 15:50:00) [38]

максимальный объем ИНИ 64к


Digitman   (2004-07-26 15:49:00) [39]

что за блажь - хранить в текстовомвиде в INI-формате такой бешеный объем данных ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо