![]() |
String als default bei propertys ???
Delphi-Quellcode:
Bei den ersten 2 mekert der Compiler das es Ordinale, Pointer oder SmallSet sein müssen.
property ComPort: String read VComPort write SetComPort default DefaultComPort;
property Parity: String read VParity write SetParity default DefaultParity; property Databits: Integer read VDatabits write SetDatabits default DefaultDatabits; property Stopbits: Integer read VStopbits write SetStopbits default DefaultStopbits; Wie kann ich dann den default bei strings definieren??? Mfg Tobi |
Re: String als default bei propertys ???
strings :
'0' 'x' 'dijfjfsöafjdsklfdskaös' :P |
Re: String als default bei propertys ???
Zitat:
|
Re: String als default bei propertys ???
Zitat:
Tada... Zitat:
Zu Deutsch: Im Konstruktor händisch zuweisen, anders dürfts ned gehn. @Hansa: :thumb: :roll: :wall: greetz Mike |
Re: String als default bei propertys ???
:wiejetzt:
Nommal meine Frage: Wie kann ich einen Default im Stringformat erstellen? Sodass in der Kompo im OI bei Comport standatirisiert Com1 drinsteht. Zitat:
Zitat:
|
Re: String als default bei propertys ???
Ich glaube, du gehst den falschen Weg ;) Wieso willst für diese Eigenschaften denn String-Properties? Sind doch eigentlich Integer. Im OI wird sowieso alles als string dargestellt.
Solltest du aber unbedingt strings haben wollen, musst du die Werte im Konstruktor zuweisen. @Hansa: nimm dir bitte mal fkerber's Avatar zu Herzen. |
Re: String als default bei propertys ???
Für strings gibt es nunmal keine defaults.
|
Re: String als default bei propertys ???
Zitat:
Wie geht das mit dem Constructor??? //EDIT Bei Labels steht ja in der Caption standarisiert auch Label1 drin ;-) |
Re: String als default bei propertys ???
Deine Komponente hat doch bestimmt eine OnCreate-Prozedur, oder?
Und da schreibst du einfach rein:
Delphi-Quellcode:
Eine andere Möglichkeit wäre eine Variable dieses Typs (statt String):
Port:= 'Com1';
Delphi-Quellcode:
type
TPort = (Com1,Com2,Com3); |
Re: String als default bei propertys ???
Delphi-Quellcode:
@CK_CK: OnCreate ist ein Event von TForm und noch paar andren Klassen, wenn ich mich nich irre... Meinst du AfterConstruction?
type
MyComponent = class(TComponent) private fPort: string; public property Port: ... ; constructor Create; override; end; implementation constructor MyComponent.Create; begin inherited Create; fPort := 'com1'; end; |
Re: String als default bei propertys ???
Zitat:
Delphi-Quellcode:
if VCommPort = '' then VComport := 'Defaultwert';
|
Re: String als default bei propertys ???
Zitat:
es sollten schon strings sein |
Re: String als default bei propertys ???
Zitat:
@EDatabaseError: Füge einfach Dax's Code ein (das mit dem Constructor und Create...) |
Re: String als default bei propertys ???
die "Default" directive bestimmt nicht welchen Wert das Propertie nach dem erstellen hat.
Das "Default" dient dazu das Properties nicht in der DFM gespeichert werden wenn Sie eben diesen Wert haben. Wenn du willst das nach dem erstellen, die komponente bestimmte Wert hat, musst du den Constructor überschreiben und darin die Werte setzen. Und wie das geht solltest du in jedem ordentlichen oop-Tutorial lernen. Es hier zu posten bringt nix weil dir eben diese Grundlagen fehlen und somit nur weitere Fragen auftauchen würden welche mit einem ordentlichen Tutorial in 5 Minuten geklärt werden. Und so ein Tutorial gibts auf: ![]() |
Re: String als default bei propertys ???
Delphi-Quellcode:
Schaut euch mal den Code an :cry:
unit EDEComPort;
interface uses Windows, Messages, SysUtils, Classes, Controls, Dialogs; const DefaultComPort = 'Com1'; DefaultDataBits = 8; DefaultStopBits = 1; DefaultParity = 'none'; type TEDEComPort = class(TComponent) private { Private-Deklarationen } VComPort: String; VParity: String; VDataBits: Integer; VStopBits: Integer; procedure SetComPort(Value: String); procedure SetParity(Value: String); procedure SetDatabits(Value: Integer); procedure SetStopbits(Value: Integer); protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create; override; //<- Dekleration "Create" unterscheidet sich von vorheriger Dekleration function Open : Boolean; function Close : Boolean; procedure TX(Data: String); function RX : String; property ComPort: String read VComPort write SetComPort; property Parity: String read VParity write SetParity; property Databits: Integer read VDatabits write SetDatabits default DefaultDatabits; property Stopbits: Integer read VStopbits write SetStopbits default DefaultStopbits; published { Published-Deklarationen } end; procedure Register; implementation procedure Register; begin RegisterComponents('Tobias Hocke Software', [TEDEComPort]); end; constructor TEDEComPort.Create; begin inherited Create; //<- Nicht genügend wirkliche Parameter ComPort := DefaultComPort; end; |
Re: String als default bei propertys ???
Zitat:
|
Re: String als default bei propertys ???
@EDataBaseError: Wenn du eine Methode überschreibst musst diese die gleichen Parameter haben wie die originale. Ansonsten wäre ja unklar wie die überschriebene Methode aufgerufen wird wenn jemand die Methode der Basisklasse aufruft.
|
Re: String als default bei propertys ???
danke :thumb:
|
Re: String als default bei propertys ???
Bevor ich hier noch zerrissen werde : wenn string so nicht geht, dann orientiere Dich doch an AsyncPro. Die benutzen einen Aufzählungstyp (Com1,Com2...Com16...) Nacht.
|
Re: String als default bei propertys ???
String geht indirekt auch. Mann muss dort nur den Umweg über stored gehen. Also eine Funktion schreiben die zurück gibt ob default oder nicht.
|
Re: String als default bei propertys ???
Ich kann (will) eben keinen Typ wie Com1,Com2 haben da:
Es mich selbst stört wenn ich die Konfiguration in einer Datei oder so speichern will ;-) Da kann man schlecht ganze Typen drinne aufheben. Deshalb ist 'Com1' dafür besser geeignet ;-) Bitte schauts euch die Komponente auch mal an :angel: ![]() Mfg Tobi |
Re: String als default bei propertys ???
Zitat:
Übrigens, das default bei Properties bedeutet nicht, dass die Eigenschaft automatisch diesen Wert bekommt. Es bedeutet, dass das Streaming-System dieses Property nicht in die DFM Datei schreibt, wenn der Wert der Eigenschaft dem default-Wert entspricht. |
Re: String als default bei propertys ???
Zitat:
Das hab ich auch festgestellt ;-) Mach ich jetzt im constructor create. Mfg Tobi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz