Проблеммы с типом String

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Проблеммы с типом String

Сообщение stikriz » 06.08.2011 15:41:35

Размер записи не меняется. Размер записи известен на этапе компиляции.
Строку в бинарный файл пишут обычно так: пишут длину строки, потом саму строку
Код: Выделить всё
procedure SaveString(const Value: string; Str: TStream);
var Count: Integer;
begin
Count:=Length(Value);
if Str.Write(Count, Sizeof(Integer)) < Sizeof(Integer) then
  raise Exception.Create('Ошибка записи');
if Count > 0 then
  if Str.Write(Value[1], Count) < Count then
   raise Exception.Create('Ошибка записи');
end;

Ну, и читают также: читают длину строки и саму строку. Надо только точно знать, что сейчас будет строка :-)
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

Re: Проблеммы с типом String

Сообщение Ism » 06.08.2011 17:11:28

А зачем вообще пихать структуру в файл ?Может достаточно обычной таблицы в файле в разделителями tab. Заодно и место сэкономите, так как для каждой строки выделяется пространство по ее длине.
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Проблеммы с типом String

Сообщение Кот239 » 09.08.2011 11:09:09

Ism писал(а):А зачем вообще пихать структуру в файл ?Может достаточно обычной таблицы в файле в разделителями tab. Заодно и место сэкономите, так как для каждой строки выделяется пространство по ее длине.


"Пихать структуру в файл"..это я так хотел легко и быстро сохранять массивы своих записей. Однако уже пришел к выводу что лучше один раз написать алгоритм побайтового сохранения например в безтиповом файле, чем нагружать дисковое пространство пустыми полями.
Кот239
незнакомец
 
Сообщения: 7
Зарегистрирован: 02.08.2011 14:05:24

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru