Форум: "Начинающим";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
ВнизКак читать данные из потока в такое поле ? Найти похожие ветки
← →
Шар (2007-12-23 06:21) [0]
MyRec = record
Txt: string[4];
...
end;
aStream.Read(MyRec1.Txt[1], 4); - почему-то не работает. Или я что-то не так делаю?
← →
Dimaxx © (2007-12-23 09:11) [1]И не будет. Потому что string[4] записывается в виде <длина>+<данные>. Т.е. у тебя сначала идет байт длины строки, потом данные строки. Проще использовать array[0..3] of Char вместо string[4].
← →
boa_kaa © (2007-12-23 11:03) [2]
> Dimaxx © (23.12.07 09:11) [1]
ерунды не говори. В String[n] длина уже есть.
> Шар (23.12.07 06:21)
у тебя не работает что-то другое. нужен более подробный код: как записывается, где позиция указателя, где читается
← →
korneley © (2007-12-23 11:40) [3]Попробуй перед чтением из потока сделать SetLength(MyRec1.Txt, 4), так сказать, для плезиру :)
← →
Dimaxx © (2007-12-23 12:45) [4]
> ерунды не говори. В String[n] длина уже есть.
Ерунды не говори. Никто и не говорил, что ее нет. Длина есть и она пишется в файл. string[4] это тот же shortstring (=string[255]), но с длиной 4.
← →
Григорьев Антон © (2007-12-23 12:57) [5]
> aStream.Read(MyRec1.Txt[1], 4); - почему-то не работает.
> Или я что-то не так делаю?
Да. Надо читать так:aStream.Read(MyRec1.Txt[0], 4);
И записывать тоже начиная с нулевого символа. У ShortString, в отличие от AnsiString, есть элемент с индексом 0 - там хранится фактическая длина строки (Ord(S[0]) = Length(S)). Поэтому и читать, и записывать такие строки в поток надо вместе с нулевым символом.
← →
korneley © (2007-12-23 13:09) [6]
> ...У ShortString, в отличие от AnsiString...
А где в [0]shortstring
?
> Да. Надо читать так:aStream.Read(MyRec1.Txt[0], 4);
А может тогда так:aStream.Read(MyRec1.Txt[0], 5);
Ну писАть, соответственно %)
← →
korneley © (2007-12-23 13:14) [7]
> korneley © (23.12.07 13:09) [6]
> А где в [0] shortstring?
Упс... нашел :) а длина записи/чтения все равноlength(s) + 1
;)
← →
boa_kaa © (2007-12-23 14:17) [8]
> Dimaxx © (23.12.07 12:45) [4]
> > ерунды не говори. В String[n] длина уже есть.
> Ерунды не говори.
Это я не со злобой. Просто получилось так грубовато :)
А читать можно и в s[0] и в s[1]. Только определиться надо, как писать сначала.
← →
Dimaxx © (2007-12-23 14:53) [9]
> Это я не со злобой. Просто получилось так грубовато :)
>
> А читать можно и в s[0] и в s[1]. Только определиться надо,
> как писать сначала.
Да я понял... :) Просто сразу подумалось, что ты не прочитав толком сообщение стал писать ответ... :D
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c