![]() |
|
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!!!
Подскажите пожалуйста как избавиться от этой ошибки. Я знаю что делаю и никакого переполнения нету (там манипуляция с указателями и походу это сводит с ума Delphi) В Project->Options->Delphi Compiler->Compiling все Runtime errors сброшены (в т.ч. и Range checking). Вот кусочек кода: Код:
// Выделение памяти m_BufferSize := LongWord(m_CodeSize + m_StartOffset + 12); m_pBuffer := VirtualAlloc(nil, m_BufferSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE); m_pCodeBuffer := m_pBuffer + m_StartOffset; Ф-ия вызывается сразу после предыдущей Код:
m_pCodeBuffer[m_CodeSize] := $E9; // RangeCheck Error помогите побороть беду) |
|
#2
|
||||
|
||||
|
VirtualAlloc не массив возвращает, а указатель на первый байт выделенной памяти.
|
|
#3
|
|||
|
|||
|
Здравствуйте!!!
Да, я знаю, m_pBuffer и m_pCodeBuffer типа PByte |
|
#4
|
||||
|
||||
|
XE3 такое позволяет:
Код:
var m_pCodeBuffer: PByte; begin m_pCodeBuffer[0]:=$e9; end; |