* test_inkey_poll.prg * Dovada fix INKEY(0,'H') -> INKEY(0.01,'H') in anaf_efactura.vc2::do_coada: * 1) fara tasta apasata, INKEY(0.01,'H') revine imediat (nu asteapta nelimitat) * 2) cu '{ESC}' in buffer, INKEY(0.01,'H') intoarce 27 * * Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\test_inkey_poll.prg" * Iesire in D:\ROA\ROACONT\COMUN\utile\Teste\test_inkey_poll_log.txt SET SAFETY OFF SET TALK OFF CLOSE DATABASES PUBLIC gcUILog gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\test_inkey_poll_log.txt" STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog) ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() ON SHUTDOWN QUIT TRY DO PrLogLocal WITH '=== INKEY(0.01,H) fara tasta - trebuie sa revina imediat ===' CLEAR TYPEAHEAD LOCAL lnStart, lnStop, lnDurata, lnI, lnCod lnStart = SECONDS() FOR lnI = 1 TO 10 lnCod = INKEY(0.01, 'H') ENDFOR lnStop = SECONDS() lnDurata = lnStop - lnStart DO PrLogLocal WITH ' 10 apeluri INKEY(0.01,H) fara tasta, durata=' + TRANSFORM(m.lnDurata) + ' sec, ultimul cod=' + TRANSFORM(m.lnCod) DO PrLogLocal WITH ' ' + IIF(m.lnDurata < 1, 'OK - sub 1 sec, deci polling, nu asteptare nelimitata', 'FAIL - a durat prea mult') DO PrLogLocal WITH '=== INKEY(0.01,H) cu {ESC} in buffer - trebuie sa intoarca 27 ===' CLEAR TYPEAHEAD KEYBOARD '{ESC}' lnCod = INKEY(0.01, 'H') DO PrLogLocal WITH ' cod obtinut=' + TRANSFORM(m.lnCod) + ' asteptat=27 ' + IIF(m.lnCod = 27, 'OK', 'FAIL') DO PrLogLocal WITH '=== TERMINAT ===' CATCH TO loEx DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message ENDTRY QUIT PROCEDURE PrLogLocal LPARAMETERS tcMesaj STRTOFILE(m.tcMesaj + CHR(13) + CHR(10), gcUILog, 1) ENDPROC PROCEDURE PrErrLocal LPARAMETERS tnErr, tcMsg, tcProg, tnLine DO PrLogLocal WITH 'EROARE ' + TRANSFORM(m.tnErr) + ': ' + m.tcMsg + ' in ' + m.tcProg + ' linia ' + TRANSFORM(m.tnLine) ENDPROC