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

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

Как "победить" лимит String в Записи ? [D6, Win95/98]


Страницы:   1 2

Fanny ©   (2005-09-05 09:25:00) 

Есть запись типа


PMyData = ^TMyData;
TMyData = packed record
 i : boolean;
 j : string;
 end;


и переменная (глобальная) этого типа


var
 M : TMyData;


работаю с map-файлами, а там танцы с бубном (указатели и пр.)
вобщем M.i работает, а M.j не хочет.
у Архангельского записано, что в Записях String надо лимитировать, те правильно так:


PMyData = ^TMyData;
TMyData = packed record
 i : boolean;
 j : string [50];
 end;


вот это самое [50]всё дело и стопорит, больше 255 нельзя - начинает ругаться компилятор, а мне надо ну хотя бы 1000

и еще - если jэто массив array of string, то что, надо тоже array of string [50]делать ?


begin...end   (2005-09-05 16:30:00) [21]

> Fanny   (05.09.05 16:18) [14]

Это ограничение для типа ShortString. Строка этого типа из N символов занимает в памяти N + 1 байт -- первый байт используется для хранения длины строки. В один байт не может поместиться число больше 255 -- отсюда и ограничение. А длинные строки (AnsiString) нельзя использовать в составе записей типизированного файла, поскольку они требуют финализации.


Fanny   (2005-09-05 16:18:00) [22]

чёрт с ним, с лимитом !
но почему всего 255 ?


TUser   (2005-09-05 15:09:00) [23]

> что в Записях String надо лимитировать

Надо, если ты используешь отображаемые в память файлы. А я так понимаю, именно это ты и делаешь.


Плохиш   (2005-09-05 13:40:00) [24]

Ну Архангельский же не виноват, что читатели читать не умеют.

При описании работы с типизированными файлами, это правильно. О чём Борланд и пишет в документации и справке.


Alexander Panov   (2005-09-05 13:32:00) [25]

Давно использую записи с типом String. ПРоблем или каких-то ограничений ни разу не встречал.


Anatoly Podgoretsky   (2005-09-05 13:05:00) [26]

Fanny   (05.09.05 09:25)  
у Архангельского записано,

Попрошу не ругаться.


Erik1   (2005-09-05 11:10:00) [27]

Тоесть сначала длину строки а после саму строку и длина должна быть фиксированого размера.


Гаврила   (2005-09-05 10:34:00) [28]


> >у Архангельского записано, что в Записях String надо лимитировать,
>


Ты уверен что именнт так там и написано?
Если да - то прав ИШ, архангельский-ламер


Reindeer Moss Eater   (2005-09-05 10:17:00) [29]

Нужны длинные строки - используй длинные строки.
Только сериализацию рекорда в файл пиши с умом, а не по Архангельскому.
Длинная сторка - это указатель, а не сами данные.


Fanny   (2005-09-05 09:50:00) [30]

2Reindeer Moss Eater
а если надо, то что использовать ?

лимит вообще не нужен


Reindeer Moss Eater   (2005-09-05 09:33:00) [31]

Длинные анси строки нельзя использовать в вариантной части записей и только-то.


Reindeer Moss Eater   (2005-09-05 09:32:00) [32]

> у Архангельского записано, что в Записях String надо лимитировать,

бред какой.


begin...end   (2005-09-05 09:29:00) [33]

> Fanny   (05.09.05 09:25)
> а мне надо ну хотя бы 1000

Либо отказаться от чтения записи "целиком" (и читать каждое поле с учётом его специфики), либо, если строка более-менее фиксированной длины, заменить string на статический array of Char нужного размера.


Digitman   (2005-09-05 09:28:00) [34]


> работаю с map-файлами, а там танцы с бубном (указатели и
> пр.)


это же не повод сразу же рассуждать о каких-то "лимитах" ..

как ты намерен использовать эту структуру ?

поясни ..


Fanny   (2005-09-05 09:27:00) [35]

да, соовсем забыл,

если делать


PMyData = ^TMyData;
TMyData = packed record
i : boolean;
j : string [50]<\b>;
end;
<\code>

то всё работает<\b>, но огорчает лимит :(


Страницы:   1 2

Наверх

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