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

Вниз

Копирование данных из TStream в буффер.   Найти похожие ветки 

 
Ega23 ©   (2005-01-27 13:30) [0]

Пишу dll. Поскольку, возможно, она будет использоваться не только из-под Делфи - не могу оперировать VCL-классами в экспортных функциях. А задача - передача "наверх" данных о сотруднике, в частности - его фотография.
Делаю так:


type
PPersInfo=^TPersInfo;
TPersInfo=packed record
  ....  //Тут не важно...
 PersImgLength : Cardinal;
 PersImgBuff   : Pointer;
end;

procedure TKedrDBPersInfo.GetPersInfoTest(var PersInfo: PPersInfo);
var
jpg:TJpegImage;
fn:String;
ms:TMemoryStream;
begin
try
 fn:=ExtractFilePath(Paramstr(0))+"FaceImg.jpg";
 jpg:=TJpegImage.Create;
 ms:=TMemoryStream.Create;
 try
  jpg.LoadFromFile(fn);
  jpg.SaveToStream(ms);

  PersInfo^.PersImgLength:=ms.Size;
  GetMem(PersInfo^.PersImgBuff, PersInfo^.PersImgLength);
  ms.Position:=0;
  ms.ReadBuffer(PersInfo^.PersImgBuff, PersInfo^.PersImgLength);

 finally
  ms.Free;
  jpg.Free;
 end;


AV вылетает на ms.Free;
Причём, после ms.ReadBuffer - в отладчике навожу на ms.Size - вижу AccessViolation...

Чего не так делаю?


 
MBo ©   (2005-01-27 13:41) [1]

ms.ReadBuffer(PersInfo^.PersImgBuff^


 
Ega23 ©   (2005-01-27 13:42) [2]

Тьфу-ты. Блин. Спасибо!


 
icWasya ©   (2005-01-27 14:52) [3]

и помнить о Sharemem!!!


 
Erik1 ©   (2005-01-27 15:31) [4]

Хотя бы fn:=ExtractFilePath(Paramstr(0))+"FaceImg.jpg"; вынеси за Try. А ShareMem кажется тут непонадобится.



Страницы: 1 вся ветка

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.033 c
14-1106417814
vet
2005-01-22 21:16
2005.02.13
"Сводка" свойств файла


14-1106509925
Чеширский_Кот
2005-01-23 22:52
2005.02.13
Является ли склонность к чему-либо признаком деградации?


4-1103708142
lexis
2004-12-22 12:35
2005.02.13
Какому Process принадлежит ForegroundWindow?


6-1101878057
VAV
2004-12-01 08:14
2005.02.13
Скачивание данных и инета


6-1102072233
Vyacheslav
2004-12-03 14:10
2005.02.13
FTP&indy Проблема при уничтожения FTPServer - a