Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

Только первые пять байт...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
6-47624
Konsul
2002-04-28 14:20
2002.07.15
Звук через локальную сеть


1-47332
easy
2002-06-27 09:18
2002.07.15
Cls


14-47734
PycUS
2002-06-11 12:15
2002.07.15
SysTray


7-47843
DiGiTaL
2002-04-20 18:10
2002.07.15
Как поместить свою программу в Виндовую автозагрузку?


8-47606
Alexandr_
2002-03-05 13:53
2002.07.15
Как нарисовать элипс на канвасе, но....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский