Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-47581
kolobok11
2002-06-26 16:46
2002.07.15
Функции Win API > EnterCriticalSection, LeaveCriticalSection ?


3-47169
Adventure
2002-06-13 16:58
2002.07.15
Бред сивой кобылы........................


3-47235
RIPer
2002-06-20 16:33
2002.07.15
Алиас


1-47563
Still Swamp
2002-06-27 20:51
2002.07.15
Тон Фон и Картинка на формочке


3-47217
Fishka
2002-06-18 16:31
2002.07.15
Как вставить поле в DBF-файл в определенное место?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский