Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

Как прочитать строку из MemoryStream?   Найти похожие ветки 

 
Voldemar   (2002-09-27 04:19) [0]

Доброе время суток!
Объясните мне, плз, как прочитать строку из MemoryStream...

имеется примерно такой код:
var MST: TMemoryStream;
str: string;
begin
...
str:="бла-бла";
MST.Position:=0;
MST.Write(str, Length(srt);
end;
...
begin
MST.Position:=0;
MST.Read(str,MST.Size);
end;


В строке получается абсолютная ерунда, которую я туда, что характерно, не назначал:)). Как же выволочь полезные данные?


 
kerk   (2002-09-27 05:22) [1]

примерно так:
var
S1, S2: String;
MemStream: TMemoryStream;
begin
MemStream := TMemoryStream.Create;
try
S1 := "Caramba !!!"; //Имеем стринг S1
MemStream.Position := 0;
MemStream.WriteBuffer(Pointer(S1)^, Length(S1)); //Пишем S1 в Stream
MemStream.Position := 0;
SetString(S2, nil, MemStream.Size);
MemStream.Read(Pointer(S2)^, MemStream.Size); ////Читаем из Stream и пишем в S2
ShowMessage(S2);
finally
MemStream.Free;
end;
end;


 
Voldemar   (2002-09-27 06:13) [2]

Благодарю! Все работает.
Только вот непонятно, почему без SetString не работает...


 
MBo   (2002-09-27 06:28) [3]

Чуть другой вариант
SetLength(S2, MemStream.Size);
MemStream.Read(S2[1], MemStream.Size);


>Только вот непонятно, почему без SetString не работает...
Потому что строка пустая, при чтении в нее можешь получить AV


 
Voldemar   (2002-09-27 06:48) [4]

>MBo © (27.09.02 06:28)

> Потому что строка пустая, при чтении в нее можешь получить AV

Так в том-то и дело, что AV нет. Просто в строке какая-то лабуда... Но в принципе вопрос решен, это я уже так, по инерции. Не люблю непонятного :)).


 
MBo   (2002-09-27 07:00) [5]

строка ansistring устроена так - по адресу -4 хранится ее длина.
Если не установить длину, и записать какие-то данные, то строка о них ничего не знает. Более того, при этом можно выйти за пределы блока памяти, отведенного программе - тогда будет AV



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
14-21233
Елена
2002-09-11 08:16
2002.10.07
Список последних документов в Windows


1-21129
Smok_er
2002-09-23 19:48
2002.10.07
Локализация программы в отдельных файлах


1-21094
Лана Розанова
2002-09-25 12:07
2002.10.07
Перевод типов


3-20944
KIR
2002-09-12 02:16
2002.10.07
На что сменить ГЛЮЧНЫЙ Paradox?


4-21334
Dimik
2002-08-21 01:24
2002.10.07
Могу ли я отображать на рабочем столе другую папку?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский