Default Fehlermeldung bei String

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
Maik81SE
Beiträge: 330
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.4 FPC 3.2.2)
CPU-Target: x86-64; avr
Wohnort: Lübeck
Kontaktdaten:

Default Fehlermeldung bei String

Beitrag von Maik81SE »

Moin zusammen,

wenn ich gerade einen String als default in einem Property setzten will erhalte ich folgende Meldung.

Code: Alles auswählen

Error: Property can't have a default value
Kurz: Ich will/muß einig Property mit Default-Werten laden/setzten, damit es auch zur Laufzeit genutzt werden kann.
die Zeile schaut dafür so aus:

Code: Alles auswählen

property  DeviceName: String read GetDeviceName write SetDeviceName default '/dev/ttyUSB0';
die vollständige Klasse in Ableitung dazu so: 

Code: Alles auswählen

type
  TSTOP = (SB1, SB1andHalf, SB2);
  TSTAT = (Run, Wait, Free, Error);
 
  TSer    = class(TWinControl)
  private
    fLeft,
    fTop,
    fWidth,
    fHeigth      : Word;
    fDefault     : Boolean;
 
    procedure SetDefault(Value: Boolean);
  public
    constructor Create(TheOwner: TComponent); override;
  published
    property Default : Boolean read fDefault write SetDefault default false;
  end;
 
  TUSBSer = class(TSer)
  private
    { Private declarations }
    fDevice    : String;
    fBaud      : Int64;
    fBit       : byte;
    fParity    : char;
    fStop      : TSTOP;
    fStat      : TSTAT;
    fSoft,
    fHand,
    fConnect   : Boolean;
    fOnConnect,
    FOnClick   : TNotifyEvent;
  protected
    { Protected declarations }
  public
    { Public declarations }
    function  GetDeviceName: String;
    function  GetBaud    : Int64;
    function  GetBit     : byte;
    function  GetParity  : char;
    function  GetStop    : TSTOP;
    function  GetStat    : TSTAT;
    function  GetSoft    : Boolean;
    function  GetHand    : Boolean;
    function  GetConnect : Boolean;
 
    procedure SetDeviceName(Value: String);
    procedure SetBaud(Value: Int64);
    procedure SetBit(Value: byte);
    procedure SetParity(Value: char);
    procedure SetStop(Value: TSTOP);
    procedure SetSoft(Value: Boolean);
    procedure SetHand(Value: Boolean);
    procedure SetConnect(Value: Boolean);
 
    Constructor Create;
  published
    { Published declarations }
    procedure Paint;
 
    property  default;
    property  DeviceName: String read GetDeviceName write SetDeviceName default '/dev/ttyUSB0'; // <--- Fehlermeldung!
    property  BaudRate: Int64 read GetBaud write SetBaud default 9600;                          // <--- Wird sauber genommen!
    property  Bit: byte read GetBit write SetBit;
    property  Parity: char read GetParity write SetParity;
    property  StopBit: TSTOP read GetStop write SetStop;
    property  Status: TSTAT read GetStat;
    property  Softshack: Boolean read GetSoft write SetSoft;
    property  Hardwarefluss: Boolean read GetHand write Sethand;
    property  AutoConnect : Boolean read GetConnect write SetConnect;
    property  OnConnect: TNotifyEvent read fOnConnect write fOnConnect;
    property  OnClick: TNotifyEvent read FOnClick write FOnClick;
  end;
Sieht jemand von euch noch eine Möglichkeit einen String als Default zu setzte, OHNE ein Type setzten zu müssen?
Danke im Vorraus und Schönes Bergfest euch allen

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.4 FPC 3.2.2);

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Default Fehlermeldung bei String

Beitrag von baumina »

Einfach im Constructor vorbelegen.
.

TBug
Beiträge: 179
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: Default Fehlermeldung bei String

Beitrag von TBug »

Einen Default-Wert bei einer String-Property gibt es nicht, aber es wäre egal, denn Du möchtest ja die Variable mit einem Wert vorbelegen. Daher siehe unten.
baumina hat geschrieben:Einfach im Constructor vorbelegen.
Ist sowieso ein Muss, denn der Default-Wert einer Property initialisiert nicht die Property mit diesem Wert, sondern kennzeichnet nur, welcher Wert der Default-Wert ist und somit nicht in der lfm-Datei gespeichert werden muss/wird.


.

Benutzeravatar
Maik81SE
Beiträge: 330
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.4 FPC 3.2.2)
CPU-Target: x86-64; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Default Fehlermeldung bei String

Beitrag von Maik81SE »

baumina hat geschrieben:Einfach im Constructor vorbelegen.
Also das, was ich am ende sowieso machen ;)

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.4 FPC 3.2.2);

Mathias
Beiträge: 7215
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Default Fehlermeldung bei String

Beitrag von Mathias »

Code: Alles auswählen

property  BaudRate: Int64 read GetBaud write SetBaud default 9600;            // <--- Wird sauber genommen!
Bist du sicher, das dies angenommen wird, oder wird es einfach ohne Fehler kompiliert ?

Siehe hier: http://www.lazarusforum.de/viewtopic.ph ... ult#p80550

PS: Machst du eine neue Bibliothek für den COM-Port ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Maik81SE
Beiträge: 330
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.4 FPC 3.2.2)
CPU-Target: x86-64; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Default Fehlermeldung bei String

Beitrag von Maik81SE »

Mathias hat geschrieben:

Code: Alles auswählen

property  BaudRate: Int64 read GetBaud write SetBaud default 9600;            // <--- Wird sauber genommen!
Bist du sicher, das dies angenommen wird, oder wird es einfach ohne Fehler kompiliert ?

Siehe hier: http://www.lazarusforum.de/viewtopic.ph ... ult#p80550

PS: Machst du eine neue Bibliothek für den COM-Port ?
Ja Mathias ich mache mir eine KlassenBiblo für meine Com-Ports.

Primär wird diese auch nur für Ubuntu verfühgbar sein.
Ob ich ggf Windows nachsetzte oder dies wie ich wie sonst mit Synaser

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.4 FPC 3.2.2);

Antworten