[fpc-pascal] Using Serial in a TCP/RS232 gateway, how to set buffer sizes?
José Mejuto
joshyfun at gmail.com
Fri Sep 8 16:23:04 CEST 2017
El 08/09/2017 a las 10:34, Bo Berglund escribió:
> for i := 0 to l-1 do
> begin
> sLine := sLine + IntToHex(Buf[i],2);
> end;
> lbxLog.Items.Add(sTime + ' ' + sLine);
> lbxLog.ItemIndex := lbxLog.Items.Count-1;
Hello,
This is a big "NO, NO!" for quite large buffers, that code can take a
lot of time for a 50K buffer, as it will render in the expected 50K
inttohex conversions, but also (in worst and impossible case scenario)
50K memory moves, 50K thread locks, 50K memory allocations and 50K
memory frees.
Much better something like:
SetLength(sLine, Length(buf) * 2);
Bin2Hex(@Buf[0],sLine[1],Length(Buf));
sLine := Prefix + ':' + sLine;
Please recheck params syntax for Bin2Hex, my memory is not as it used to
be :-)
A large listbox is not also very good.
--
More information about the fpc-pascal
mailing list