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

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

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

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

Сообщение GAMER » 04.09.2012 13:20:48

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

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

Сообщение zub » 04.09.2012 13:44:55

записать длинну строки, потом содержимое.
чтото навроде этого:
Код: Выделить всё
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);
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение GAMER » 04.09.2012 14:15:45

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

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

Сообщение alexs » 04.09.2012 23:28:02

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

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

А можно просто
Код: Выделить всё
if ssize>0 then
  BlockWrite(f, s[1], ssize);

На мой взгляд - так лучше...
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 224

Рейтинг@Mail.ru