Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.008 c
7-83290
Magical
2003-11-09 10:55
2004.01.26
Как получить Sid пользователя.


1-83158
pserg
2004-01-14 23:58
2004.01.26
Поиск фрагмента текста в файлах MSWord


1-83134
alexnmsk
2004-01-15 10:58
2004.01.26
Перемещение окна за TFrame


1-83150
FREEMAN
2004-01-15 11:54
2004.01.26
Копирование файлов по битам


14-83274
Rex-w1
2004-01-05 08:51
2004.01.26
Базы данных




   Наверх