Witam.
Mam mały problem. Miałem napisaną komunikację pomiędzy dwoma kompami - jeden z nich tylko nasłuchiwał.
Był to prosty program - okno utworzone w AppBuilder z jednym button'em, który wołał procedurę "start":
======================================
def var hSocket as handle no-undo.
def var mRead as memptr no-undo. // Bufor odczytu z portu
// Ustawiam go na 1024 bajty
set-size(mRead) = 1024.
................
................
run start.
................
................
// Procedura inicjująca nasłuch
PROCEDURE start:
hSocket:connect ('-H 192.168.0.222 -S 1111').
if hSocket:connected() then do:
hSocket:set-read-response-procedure( "czytajPort").
MY-BLOCK:
DO ON ERROR UNDO MY-BLOCK, LEAVE MY-BLOCK:
wait-for read-response of hSocket.
END.
end.
END PROCEDURE.
// Procedura czytająca port
PROCEDURE czytajPort:
def var xTxt as char no-undo init ''.
def var x as int no-undo init 0.
x = hSocket:get-bytes-available().
hSocket:read (mRead, 1, x).
xTxt = get-string(mRead, 1).
message 'Odczytany komunikat: ' xTxt view-as alert-box info buttons OK.
END PROCEDURE.
======================================
Oczywiście pominąłem tu wszelkie obsługi błędów i inne niepotrzebne bzdety.
Wszystko działa pięknie, ale chciałem to przenieść na wersję obiektową.
Utworzyłem projekt w OE VisualDesigner, utworzyłem obiekt okno typu "ABL MDI Form".
Dodałem button "Start" i tu moja wiedza się skończyła.
Jak dodać w ramach klasy procedurę czytającą, czyli jak wykonać:
hSocket:set-read-response-procedure( "czytajPort").
i jak zdefiniować procedurę "start":
PROCEDURE czytajPort:
...
END PROCEDURE.