![]() |
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] |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Wichtig hierbei ist nicht wirklich die Lösung, sondern es geht wohl eher darum, ob du verstanden hast, warum du nicht das machen kannst, wie du es zu Beginn hattest?
Zudem würde ich den Code wie folgt vereinfachen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin // Baudrate setzen K6NSerial1.Baudrate := br_000050; end; |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Hallo Leute
Die Sache ist viel verzwickter. Das letzte Beispiel von mir und s.h.a.r.k funktionieren wenn ich ein ganz einfaches simples Programm. Aber in meinen beiden umfangreicheren Programmen wo ich diese Funktion einbauen will, kommen genau die Fehlermeldungen die ich oben beschrieben haben. Vermutlich gibt es in den Verwendeten Bibliotheken schon irgendwo ein Typ TBaudraten? Ich verwende aber keine andere Komponente dieser Art. In einem anderen Programm verwendet ich eine andere Komponente auch für die RS232 und das Problem ist das selbe. Ich bin im Moment am verzweifeln.Meine Programme funktionieren ausser diese Baudratenzuweiseung. Bin im Moment am Ende des Lateins. |
Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei
Wenn du mit der Maus über die Variablen/Konstanten gehst, dann wird angezeigt, wo diese herkommen.
(Ab einer Professional kann man auch via Strg+Draufklicken direkt dort hingelangen). Wenn es also ein Problem gibt, dann schau wo dieses Problem (die doppelte Deklaration) herkommt. PS: man kann auch den passenden Namespace angeben, wenn man eine bestimmte Deklaration nutzen möchte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 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