Главная страница
    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.039 c
3-1189424450
Ulugbek
2007-09-10 15:40
2008.01.20
Как скрыть в DbLookupComboBox Drop-Down стрелку


11-1182503317
=BuckLr=
2007-06-22 13:08
2008.01.20
Взять Items[i] как из RichEdit RTF-строку


15-1197749797
unknowing
2007-12-15 23:16
2008.01.20
UML. Опыт получения заданий от непрограммистов.


2-1198071249
Alik
2007-12-19 16:34
2008.01.20
Кодировка КОИ-8 в текстовом файле


15-1197341960
Превед
2007-12-11 05:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский