![]() |
|
#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; Пишу программы за еду. __________________ |