1nd1g0 писал(а):
Физически история проблемы такая же - менеджер памяти обращается к области памяти за пределами допустимого адресного пространства и благополучно улетаетА если проверить на другой схеме, которую я перезалил, то там происходит выброс.
P.S. Гы. А если попробовать переменную pBuffer сделать глобальной, а не выделять ей память при каждом обращении к оверлэпиду, интересно, где тогда вылетит
------------ Дoбавленo в 15.32:
1nd1g0 писал(а):
Некоторые - действительно попадают в доступный ему сегмент данных и ошибки не происходит, туда попадают нужные данные и всё работает. Некоторые попадают в сегменты, доступные, но защищённые - происходит исключение по ошибке №204 самого паскаляА какого черта система сама по себе производит реалокэйт памяти куда попало, а не в досутпную область, это что, намек на то, что метод перекрытия глючный у ReadFile Совсем не радует
------------ Дoбавленo в 15.42:
Посмотрел более детально, у ReadFile нет метода перекрытия, к методу запуска цепляется новый поток с асинхронным методом Read, а в нем читаются Pipe от консольнго приложения. А сам ReadFile не имеет перекрытого метода. Похоже, что сам поток глючит с выделенной памтью
------------ Дoбавленo в 15.50:
Короче, надо pBuffer сделать глобальной для всего класса и посмотреть
К примеру, так
type
THIWinExec = class(TDebug)
private
pBuffer: string;
hProcess: THandle;
hPipeInputWrite: THandle;
...
А из метода Read не забыть убрать или поставить ремарку