Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизТолько первые пять байт... Найти похожие ветки
← →
SkyQuake (2002-07-04 19:04) [0]Пишу значить так:
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!
Почему?
← →
Volj (2002-07-04 19:09) [1]Какой у тебя
Image1.Picture.ClassType?
← →
Skier (2002-07-04 19:15) [2]>SkyQuake
А что ты вообще-то хочешь загнать в Buf ???
← →
SkyQuake (2002-07-04 19:21) [3]>Volj
Дык ведь TPicture
>Skier
По моему замыслу - содержимое MStream...
← →
Volj (2002-07-04 19:26) [4]Блин (это я себе):
Image1.Picture.Graphic.ClassName?
Только не отвечай, что TGraphic...
← →
Юрий Зотов (2002-07-04 19:29) [5]Попробуйте изменить PChar на Pointer:
var Buf: Pointer;
Если заработает - назову причину.
← →
SkyQuake (2002-07-04 19:30) [6]>Volj
TJPEGImage
← →
Skier (2002-07-04 19:32) [7]>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:38) [8]>Юрий Зотов
Звменил. Работает.
Но вот вопрос как теперь определить размер данных на которые указывает Buf?
← →
Volj (2002-07-04 19:40) [9]Дык MStream.Size
← →
Юрий Зотов (2002-07-04 19:44) [10]Оно и раньше работало, но ВИДЕЛИ вы только до первого нуля. Сказали PChar - вот Вам и показывают ASCIIZ, ничего странного.
← →
SkyQuake (2002-07-04 19:46) [11]>Volj
Нет. MStream, допустим пуст, а Buf^ содержт необходимые данные (картинку) причём SizeOf(Buf^) даёт нуль. Как узнать размер данных на которые указывает Buf?
← →
Volj (2002-07-04 19:48) [12]...
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);
...
← →
Volj (2002-07-04 19:52) [13]А вообще, если объявлять
Buf: Pointer
и использоватьTMemoryStream
, то рольBuf
прекрасно исполняет
MStream.Memory
← →
SkyQuake (2002-07-04 19:53) [14]>Volj
Вобщем забудь про MStream.
Просто надо определить размер Buf^.
И я это сделал как то коряво:
Size:=Length(string(Buf));
Ведь работает...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c