Das ist auch eine sehr gute Idee, muss ich mal probieren.
Ich habe es folgendermaßen gelöst und das ganze in einen eigenen Thread gepackt:
Delphi-Quellcode:
procedure rdt_rec_decoding.Execute;
var
s : String;
b : Byte;
a,i, i1 : integer;
begin
NameThreadForDebugging('rdt_data_receive');
try
a := 0;
a := Length(BBuffer);
i1 := 0;
s := '';
for i := 1 to a do begin
b := BBuffer[i1];
if b <> 3 then begin
if b = 2 then begin
i1 := i1 + 1;
end else begin
s := s + Chr(b);
i1 := i1 + 1;
end;
end;
if b = 3 then begin
ddata := s;
if s <> '' then begin
Synchronize(UpdateLastRecord);
Synchronize(UpdateRecordbox);
end;
end;
end;