Показать сообщение отдельно
  #3  
Старый 27.04.2013, 08:09
DrGeorg DrGeorg вне форума
Прохожий
 
Регистрация: 26.04.2013
Сообщения: 38
Версия Delphi: RAD Studio XE3
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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...
Что я делаю не так?
__________________
Все смелые до begin...
Ответить с цитированием