Цитата:
Сообщение от lmikle
Походу, это функция из KOL
|
Да я знаю, но решил попробовать вот так:
Код:
implementation
{$R *.dfm}
{$R DAT.RES}//Ресурс прилинковал
{ Список файлов в Dat.rc
Dat01 RXDATA LOADONCALL 01pi.dat
Dat02 RXDATA LOADONCALL 02pi.dat
Dat03 RXDATA LOADONCALL 03pi.dat
Dat04 RXDATA LOADONCALL 04pi.dat
Dat05 RXDATA LOADONCALL 05pi.dat
Dat06 RXDATA LOADONCALL 06pi.dat
Dat07 RXDATA LOADONCALL 07pi.dat}
...
procedure TForm1.Button1Click(Sender: TObject);
var
pData:Pointer;
hResoource:THandle;
ResSize:Longint;
nam:String;
ms:TMemoryStream;
begin
nam :=('Dat01');//Имя файла в ресурсе
hResoource:=LoadResource(hInstance, FindResource(hInstance, PWideChar(nam), RT_RCDATA));
pData:=LockResource(hResoource);
ResSize:= SizeOfResource(hInstance, hResoource);
ms:=TMemoryStream.Create;
try
ms.SetSize(ResSize);
ms.Write(pData^, ResSize);
ms.Seek(0,0);
FreeResource(hResoource);
//Дальше делаю что-то с данными в памяти
//При загрузке файла, скажем 01pi.dat с диска в память (ms.LoadFromFile...) код работает нормально!
finally
ms.Free;
end;
Выскакивает ошибка access violation at address...
Что я делаю не так?