Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » E2033 Types of actual and formal var parameters must be iden

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Mishko78

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день. Подскажите плиз, такая проблема: при компиляции кода из Delphi 2010 в XE5 возникает ошибка.
 
if( not GetExitCodeProcess( ProcessInfo.hProcess, pExitCode^ ) )then begin pExitCode^ := 0; end;
 
В модуле Winapi.Windows объявлена
 
function GetExitCodeProcess(hProcess: THandle; var pExitCode: PDWORD): BOOL; stdcall;

Всего записей: 14 | Зарегистр. 18-09-2015 | Отправлено: 11:55 21-09-2015
MINX

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
скорее всего:
function GetExitCodeProcess(hProcess: THandle; var lpExitCode: DWORD): BOOL; stdcall;

Всего записей: 33 | Зарегистр. 30-01-2007 | Отправлено: 18:07 21-09-2015
Mishko78

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пробывал, все равно ошибка
 
Функция GetExitCodeProcess вызывается из функции ниже
 
function WaitProcess( FileName:AnsiString; CommandLine:AnsiString = ''; CurrentDir:AnsiString = ''; pExitCode:PDWORD = nil ):BOOLEAN;
var
    StartupInfo : _STARTUPINFOA;
    ProcessInfo : TProcessInformation;
    WaitRes     : DWORD;
    Msg         : TMsg;
    Done        : BOOLEAN;
begin
...
end;
 
Ее объявление вроде верно
function WaitProcess( FileName:AnsiString; CommandLine:AnsiString = ''; CurrentDir:AnsiString = ''; pExitCode:PDWORD = nil ):BOOLEAN;

Всего записей: 14 | Зарегистр. 18-09-2015 | Отправлено: 10:19 22-09-2015
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может просто в XE5 надо отключить "Typed @ operator" ?

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 11:25 22-09-2015
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
пробывал, все равно ошибка  

Mishko78, что пробовал?
 
Дело не в Typed @ operator. В msdn прототип функции:

Цитата:
BOOL WINAPI GetExitCodeProcess(
  _In_  HANDLE  hProcess,
  _Out_ LPDWORD lpExitCode
);
, значит в дельфи, как уже написал MINX должно быть:

Цитата:
function GetExitCodeProcess(hProcess: THandle; var lpExitCode: DWORD): BOOL; stdcall;
или
function GetExitCodeProcess(hProcess: THandle; lpExitCode: PDWORD): BOOL; stdcall;  // но это не по канонам
 
=> WinApi.Windows в xe5 содержит ошибку, надо переопределять функцию. Если брать первый вариант объявления, тогда разыменование PDWORD даст DWORD и всё встанет на свои места, код то работал в 2010
 

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 15:00 22-09-2015 | Исправлено: NeoAnomaly, 15:05 22-09-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » E2033 Types of actual and formal var parameters must be iden


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru