BlockWrite, как записать туда строку AnsiString?

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

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

Ответить
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

BlockWrite, как записать туда строку AnsiString?

Сообщение GAMER »

subj и прочитать потом.
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

записать длинну строки, потом содержимое.
чтото навроде этого:

Код: Выделить всё

ssize:integer;
...
//пишем
ssize:=length(s);
BlockWrite(f,ssize,sizeof(ssize));
BlockWrite(f,pointer(s)^,ssize);
..
//читаем
BlockRead(f,ssize,sizeof(ssize));
setlength(s,ssize);
BlockRead(f,pointer(s)^,ssize);
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Спасибо!
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

zub писал(а):BlockWrite(f,pointer(s)^,ssize);

Фи.. строки в ponter... Не красиво. Тогда уже лучше PChar указать.

А можно просто

Код: Выделить всё

if ssize>0 then
  BlockWrite(f, s[1], ssize);

На мой взгляд - так лучше...
Ответить