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

Вниз

Как записать в поток TMemoryStream   Найти похожие ветки 

 
kiril-   (2004-01-14 12:37) [0]

Добрый день!
У меня проблема: в памяти по указателю хранится блок данных. Его нужно передать в поток. Делаю так

var
Data: pointer;
Size: int64;
MS: TMemoryStream;

.....

begin
MS:=TMemoryStream.Create;
MS.WriteBufer(Data, Size);
....
end;

но если проверить MS.Size, то его значение = 0. Что не так делаю?
Data и Size имеют нужные значения.


 
BiN   (2004-01-14 12:42) [1]

ты наверно хотел MS.WriteBufer(Data^, Size);


 
kiril-   (2004-01-14 12:44) [2]

> BiN
И так тоже не помогает :( MS.Size = 0...


 
DCoder   (2004-01-14 12:45) [3]

Может так? (не уверен)
MS.WriteBufer(Data^, SizeOf(Data));


 
Тимохов   (2004-01-14 12:46) [4]

А может так? (также не уверен)
MS.Write(Data^, size);


 
DCoder   (2004-01-14 12:48) [5]

попробуй перед вставкой
TMemoryStream.SetSize


 
Тимохов   (2004-01-14 12:49) [6]

у меня вот это работает, проверил
var
Data: pointer;
Size: int64;
MS: TMemoryStream;
begin
MS:=TMemoryStream.Create;
Size := 10;
MS.Write(Data^, Size);
showmessage(inttostr(ms.size));
end;


 
Тимохов   (2004-01-14 12:50) [7]

Собственно говоря и это тоже работает, также проверил
var
Data: pointer;
Size: int64;
MS: TMemoryStream;
begin
MS:=TMemoryStream.Create;
Size := 10;
MS.Writebuffer(Data^, Size);
showmessage(inttostr(ms.size));
end;


 
Тимохов   (2004-01-14 12:51) [8]

Собственно, наверное 17ая строка?


 
BiN   (2004-01-14 12:56) [9]

2 kiril- (14.01.04 12:37)
да этот код у тебя вообще работать не будет - переменная Size не определена


 
McSimm   (2004-01-14 13:01) [10]


> kiril- (14.01.04 12:44) [2]
> > BiN
> И так тоже не помогает :( MS.Size = 0...


Вероятно ты пытаешься посмотреть MS.Size в отладчике?
Отладчик может показать 0, хотя реально занчение свойства отлично от нуля


 
kiril-   (2004-01-14 13:15) [11]

> McSimm
Так оно и есть!
Но теперь, если я пытаюсь перенести содержимое в Image:
Image1.Picture.Bitmap.LoadFromStream(MS); то ничего не появляется, хотя если сделать MS.SaveToFile(FileName) то все получается.


 
default   (2004-01-14 13:26) [12]

покажи код


 
McSimm   (2004-01-14 13:27) [13]

Перед
> LoadFromStream(MS);

сделай
MS.Position := 0;
или
MS.Seek(0, soFromBeginning);


 
kiril-   (2004-01-14 14:19) [14]

var
ms: TMemoryStream;
Field: TMyObj;
begin
ms:=TMemoryStream.Create;

Field.SaveToStream(ms); <-
Image1.Picture.Bitmap.LoadFromStream(MS); <- ничего
// а если сделать ms.SaveToFile(FileName); то все ок
....

procedure TMyObj.SaveToStream(Stream: TMemoryStream);
begin
Stream.Write(FBlob^, FSize);
end;
//------------


 
MBo   (2004-01-14 14:21) [15]

[13]
еще раз прочитай



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

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

Наверх





Память: 0.47 MB
Время: 0.004 c
14-83267
Карелин Артем
2004-01-06 13:02
2004.01.26
Программа AIN.EXE Где взять?


1-83135
ssk
2004-01-15 11:20
2004.01.26
TIF в PDF


1-83198
yaJohn
2004-01-14 15:27
2004.01.26
DLL + WinXP + Debug = ?


1-83154
Hkr
2004-01-14 20:27
2004.01.26
Системное меню


1-83178
_demon
2004-01-14 20:55
2004.01.26
ListBox





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