Форум: "Основная";
Текущий архив: 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.007 c