![]() |
Wie kann ich einen Aufzählungstyp einer Komponente zuweisen?
Hallo Leute
Ich habe ein Komponente für die RS232-Schnittstelle. Nurn muss ich der Komponente während der Laufzeit die Baudrate zuweisen. Leider geht es nicht so wie ich es gemacht habe. Der Type "TBaudrate" ist genau so im Source der Komponete definiert. Was mache ich falsch? Mit freudlichen Grüssen Aurus
Delphi-Quellcode:
[edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]
procedure TForm1.Button1Click(Sender: TObject);
type // Übertragungsparameter TBaudrate = (br_000050,br_000110,br_000150,br_000300,br_000600,br_001200, br_002400,br_004800,br_009600,br_014400,br_019200,br_038400, br_056000,br_057600,br_115200,br_128000,br_230400,br_256000, br_460800,br_921600); var aaa :TBaudrate; begin aaa :=br_000050; K6NSerial1.Baudrate := aaa; end; end. |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Hallo Aurus,
was heißt denn "geht nicht"? Wenn "K6NSerial1.Baudrate" vom Typ TBaudrate ist, müsste es gehen. Allerdings hast du in deinem Beispiel TBaudrate nur lokal definiert. Du musst es dort definieren, wo die Sichtbarkeit gewährleistet ist, beispielsweise in der zu "K6NBaudrate" zugehörigen Klasse. Grüße, Matze |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Zitat:
Viele Grüße, Michael |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Nein, er muß die Definition nutzen, mit welcher auch K6NSerial1.Baudrate deklariert wurde.
Ansonsten sind es unterschiedliche Typen und demnach nicht zuweisungskompatibel. Zitat:
PS: Nur weil mein Clon genauso aussieht wie ich, sind wir nicht die Selben. |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Hallo Leute
Das verstehe ich jetzt alles nicht ganz. Ich bekomme die Fehlermeldung. [Fehler] Unit1.pas(41): Inkompatible Typen: 'K6NSerial.TBaudrate' und 'Unit1.TBaudrate' [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Zitat:
Zitat:
|
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Du nutzt auch 2 verschiedenen TBaudrate. Wie gesagt darfst du das nur einmal definieren.
Deine Klasse könnte so aussehen:
Delphi-Quellcode:
Nun hast du TBaudrate in der Klasse definiert. Ich finde das sinnvoll, da es funktional zur Klasse gehört.
unit K6NSerial;
interface type TK6NSerial = class public type TBaudrate = ( br_000050, br_000110, br_000150, br_000300, br_000600, br_001200, br_002400, br_004800, br_009600, br_014400, br_019200, br_038400, br_056000, br_057600, br_115200, br_128000, br_230400, br_256000, br_460800, br_921600 ); public Baudrate: TBaudrate; end; implementation // ... end. Von außen musst du nun exakt diese Definition verwenden. Das kann so aussehen:
Delphi-Quellcode:
Dann hast du TBaudrate ein einziges mal definiert und verwendet exakt diese Definition überall.
uses K6NSerial;
procedure TForm1.Button1Click(Sender: TObject); var M6NSerial1: TK6NSerial; MyBR: TK6NSerial.TBaudrate; begin M6NSerial1 := TK6NSerial.Create; // ... MyBR := br_000110; M6NSerial1.Baudrate := MyBR; // ... end; Grüße, Matze |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Das übersteigt meine Programmierkentnisse.
Sehe ich das Richti,g dass ich die Komponente ändern muss? Oder muss ich einen Unit "unit K6NSerial" anlegen die gleich heisst wie die Komponente (TK6NSerial)? |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Also,
Erstmal schmeißt du diese Kopie von TBaudrate aus deinem Code raus, da du genau diese KOPIE nicht verwenden darfst. Denn wie schon gesagt wurde ist das zwar eine Kopie und für jeden normalen menschen ein und das selbe wie das Original, aber für Delphi sind diese kopie und das Original 2 verschiedene Sachen, da es die beiden nicht wirklich vergleicht, ob die nun denn gleich sind. Also wie gesagt schmeiß diese Kopie raus und verwende das Original - also das, wo du es rauskopiert hast. MFG |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Das ist die Lösung
Delphi-Quellcode:
So einfach war die Sache. Komisch dass mir das nicht vorher eingefallen ist.
procedure TForm1.Button1Click(Sender: TObject);
var MyBr :TBaudrate; begin MyBr :=br_000050; K6NSerial1.Baudrate := MyBr; end; Danke für eure Hilfe Gruss Aurus [edit=Matze]Und wieder die [delphi]-Tags vergessen ... MfG, Matze[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 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 by Thomas Breitkreuz