![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Только первые пять байт...
SkyQuake © (2002-07-04 19:04:00)Пишу значить так:
var Buf: PChar;
...
MStream:= TMemoryStream.Create;
Image1.Picture.LoadFromFile("picture.jpg");
Image1.Picture.Graphic.SaveToStream(MStream);
MStream.Position:=0;
GetMem(Buf,MStream.Size);
MStream.Read(Buf^,MStream.Size);
И сколько вы думаете Buf? Аж целых пять первых байт picture.jpg!
Почему?
SkyQuake (2002-07-04 19:53:00) [1]>Volj
Вобщем забудь про MStream.
Просто надо определить размер Buf^.
И я это сделал как то коряво:
Size:=Length(string(Buf));
Ведь работает...
Volj (2002-07-04 19:52:00) [2]А вообще, если объявлять
Buf: Pointerи использоватьTMemoryStream, то рольBufпрекрасно исполняет
MStream.Memory
Volj (2002-07-04 19:48:00) [3]...
MStream:= TMemoryStream.Create;
Image1.Picture.LoadFromFile("picture.jpg");
Image1.Picture.Graphic.SaveToStream(MStream);
MStream.Position:=0;
GetMem(Buf,MStream.Size);
--> В этот момент - не пуст!
MStream.Read(Buf^,MStream.Size);...
SkyQuake (2002-07-04 19:46:00) [4]>Volj
Нет. MStream, допустим пуст, а Buf^ содержт необходимые данные (картинку) причём SizeOf(Buf^) даёт нуль. Как узнать размер данных на которые указывает Buf?
Юрий Зотов (2002-07-04 19:44:00) [5]Оно и раньше работало, но ВИДЕЛИ вы только до первого нуля. Сказали PChar - вот Вам и показывают ASCIIZ, ничего странного.
Volj (2002-07-04 19:40:00) [6]Дык MStream.Size
SkyQuake (2002-07-04 19:38:00) [7]>Юрий Зотов
Звменил. Работает.
Но вот вопрос как теперь определить размер данных на которые указывает Buf?
Skier (2002-07-04 19:32:00) [8]>SkyQuake
Копировать Stream в PChar это что-то новое !
Если приспичило, то лучше так :
var
StrStream: TStringStream;
MStream : TMemoryStream;
begin
MStream:= TMemoryStream.Create;
StrStream:= TStringStream.Create(EmptyStr);
Image1.Picture.LoadFromFile("testimg.jpg");
Image1.Picture.Graphic.SaveToStream(MStream);
MStream.Position := 0;
StrStream.CopyFrom(MStream, MStream.Size);
//получишь результат в StrStream.DataString
MStream.Free;
StrStream.Free;
end;
SkyQuake (2002-07-04 19:30:00) [9]>Volj
TJPEGImage
Юрий Зотов (2002-07-04 19:29:00) [10]Попробуйте изменить PChar на Pointer:
var Buf: Pointer;
Если заработает - назову причину.
Volj (2002-07-04 19:26:00) [11]Блин (это я себе):
Image1.Picture.Graphic.ClassName?
Только не отвечай, что TGraphic...
SkyQuake (2002-07-04 19:21:00) [12]>Volj
Дык ведь TPicture
>Skier
По моему замыслу - содержимое MStream...
Skier (2002-07-04 19:15:00) [13]>SkyQuake
А что ты вообще-то хочешь загнать в Buf ???
Volj (2002-07-04 19:09:00) [14]Какой у тебя
Image1.Picture.ClassType?