![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как "победить" лимит String в Записи ? [D6, Win95/98]
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>, но огорчает лимит :(