Главная страница
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.012 c
8-83214
OgurSoft
2003-09-22 14:24
2004.01.26
Как узнать имя файла шрифта?


8-83212
dzmitry_
2003-09-12 16:42
2004.01.26
элипс по Polyline


4-83303
User_OKA
2003-11-21 09:29
2004.01.26
Получение информации о выполняющихся в системе процессах


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


1-83144
goga
2004-01-15 10:47
2004.01.26
XPManifest