Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.26;
Скачать: CL | DM;

Вниз

Как записать в поток 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
3-83113
Vi0let
2003-12-28 09:06
2004.01.26
Господа, скажите, как произвольно вкл/выкл обновление TGrid.


1-83191
MV
2004-01-14 15:07
2004.01.26
Классы с одинаковым кодом, но разными типами свойств.


1-83132
INTAARI
2004-01-15 11:28
2004.01.26
Чем лучше строить графики???


6-83226
AndreySoft
2003-10-21 20:14
2004.01.26
Как программно установить IP-адрес


1-83173
cobby
2004-01-15 02:43
2004.01.26
получить текущую ширину popupmenu