Форум: "Основная";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Внизdde после выполнения макроса не сбрасывает флаг waitstat Найти похожие ветки
← →
Rater1 (2006-07-13 15:34) [0]почему после запуска макроса через DDE всё встаёт, т.е. флаг waitstat не сбрасывается...
← →
Rater1 (2006-07-13 15:51) [1]Отрабатывает след. функция....
function TDdeClientConv.ExecuteMacro(Cmd: PChar; waitFlg: Boolean): Boolean;
var
hszCmd: HDDEData;
hdata: HDDEData;
ddeRslt: LongInt;
begin
Result := False;
if (FConv = 0) or FWaitStat then Exit;
hszCmd := DdeCreateDataHandle(ddeMgr.DdeInstId, Cmd, StrLen(Cmd) + 1,
0, 0, FDdeFmt, 0);
if hszCmd = 0 then Exit;
if waitFlg = True then FWaitStat := True;
hdata := DdeClientTransaction(Pointer(hszCmd), DWORD(-1), FConv, 0, FDdeFmt,
XTYP_EXECUTE, TIMEOUT_ASYNC, @ddeRslt);
if hdata = 0 then FWaitStat := False
else Result := True;
end;
Если hdata возвращает результат транзакции, то в соответствии с найденными мной описаниями: "Возвращает нулевое значение, если транзакция была выполнена с ошибкой, или ненулевую величину, смысл которой зависит от транзакции, (В нашем случае будет возвращена единица) при нормальном выполнении. "
условие выставлено неверно надо так:if hdata <> 0 then FWaitStat := False
Так или нет?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.041 c