Das was in folgendem Code passiert ist aus mindestens 2 Gründen sehr sehr unschön:
1. wird high-level mit low-level Code vermischt.
Dies sollte man vermeiden und stattdessen auf einer Abstraktionsebene bleiben; zumal es in diesem Fall recht einfach wäre den low-level Code zu vermeiden.
2. das
Handle für der Thread dürfte die Klasse TLMG niemals verlassen denn es ist der Job dieser Klasse die Kommunikation zu managen.
Delphi-Quellcode:
procedure TfrmMitMemo.btnShowInputClick(Sender: TObject);
...
begin
LMG1 := TLMG.Create('
172.16.6.1', 24500);
// high-level code (objektorientiert)
LMGConnectThreadHandle := BeginThread(
nil, 0, @TLMG.LMGConnectThread,
nil, 0, LMGConnectThreadID);
// low-level code (API-Aufruf)
end;