Доброго времени суток, товарищи. Есть процедура получения размера ресурса и указателя на данные ресурса. Но перед тем как выдать указатель из процедуры, данные по его адресу нужно обратотать функцией "Function Decode(DInPut: Byte): Byte;" тип передаваемого и получаемого пареметров функции изменить не возможно. Тип данных по адресу "ResPtr" не известен.
Код:
...
Type
TByteArray = Array Of Byte;
Procedure LoadDataFromRes(TheData: String; Var DataSize: LongWord; Var DataPtr: Pointer);
Var
ResHandle : THandle;
MemHandle : THandle;
ResPtr : Pointer;
Buffer : TByteArray;
Count : LongWord;
Begin
DataPtr := NIL;
DataSize := 0;
ResHandle := FindResource(hInstance, PChar(TheData), 'DATA');
MemHandle := LoadResource(hInstance, ResHandle);
DataSize := SizeOfResource(hInstance, ResHandle);
ResPtr := LockResource(MemHandle);
IF (ResPtr = NIL) OR (DataSize = 0) Then Exit;
SetLength(Buffer, DataSize);
Move(ResPtr, Buffer, DataSize);
For Count := 0 To DataSize-1 Do
Begin
Buffer[Count] := Decode(Buffer[Сount]);
End;
Move(Buffer, DataPtr, DataSize);
FreeResource(ResHandle);
End;
Выдает runtime error 216. Что я делаю не так!?
И ещё один вопрос, как из области памяти получить/присвоить значение определенного байта, имея лишь указатель на область и зная ее размер, без использвания массивов?