Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.058 c
2-1197971940
Indigo
2007-12-18 12:59
2008.01.20
Частотный букварь текста


6-1177335141
Strate
2007-04-23 17:32
2008.01.20
Имя домена по IP


11-1182631081
=BuckLr=
2007-06-24 00:38
2008.01.20
Вопрос по версии библиотеки Рич


2-1197992248
umbra
2007-12-18 18:37
2008.01.20
что делать с параметрами в TADODataSet.?


15-1197412788
Drowsy
2007-12-12 01:39
2008.01.20
Растягивающаяся рамка.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский