[fpc-pascal] Using built-in serial instead of synaser and the like for Linux console app?

Michael Van Canneyt michael at freepascal.org
Tue Sep 1 20:31:57 CEST 2020



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 at 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 at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


More information about the fpc-pascal mailing list