On Tue, 1 Sep 2020, Bo Berglund via fpc-pascal wrote:
On Tue, 1 Sep 2020 14:21:44 +0200 (CEST), Michael Van Canneyt via
fpc-pascal
<fpc-pascal@lists.freepascal.org> wrote:
You must still set the default value in the constructor.
Note that the thread itself has no idea what is the baudrate in use so
it cannot calculate the proper value at the start of Execute...
And there is no Create method either that I can use.
The constructor can always be overridden.
I did this:
TComPortReadThread=class(TThread)
private
FBuffer: TBytes;
FReadPacketSize: integer;
FReadTimeout: integer;
public
MustDie: boolean;
Owner: TFpSerialPort;
constructor Create; override; //<= THIS ADDED, GIVES ERROR
property ReadPacketSize: integer read FReadPacketSize write
FReadPacketSize; //How many bytes to read in each operation
property ReadTimeout: integer read FReadTimeout write
FReadTimeout; //Max time to wait for data in thread
protected
procedure CallEvent;
procedure Execute; override;
published
property Terminated;
end;
and the code will not compile:
fpserialport.pas(41,17) Error: There is no method in an ancestor class
to be overridden: "constructor Create;"
So, does TThread not have a constructor????
I thought all objects had.
Yes, but you can only override a virtual constructor. The TThread
constructor is not virtual.
If you want to introduce a new one just leave away the ; override;
Michael.
--
Bo Berglund
Developer in Sweden
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal