AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie kann ich einen Aufzählungstyp einer Komponente zuweisen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich einen Aufzählungstyp einer Komponente zuweisen?

Ein Thema von Aurus · begonnen am 29. Dez 2009 · letzter Beitrag vom 30. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#1

Wie kann ich einen Aufzählungstyp einer Komponente zuweisen?

  Alt 29. Dez 2009, 18:25
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:
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.
[edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 18:29
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
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 18:33
Zitat von Aurus:
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.
Man muss den Typ nicht neu definieren, sondern braucht einfach nur die Unit einbinden, in der der Typ TBaudrate definiert ist.

Viele Grüße,
Michael
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#4

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 18:35
Nein, er muß die Definition nutzen, mit welcher auch K6NSerial1.Baudrate deklariert wurde.

Ansonsten sind es unterschiedliche Typen und demnach nicht zuweisungskompatibel.

Zitat:
Der Type "TBaudrate" ist genau so im Source der Komponete definiert.
"genauso" ist nicht "identisch" und Delphi besteht auf identische Deklarationen.

PS: Nur weil mein Clon genauso aussieht wie ich, sind wir nicht die Selben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#5

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 18:48
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#6

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 18:52
Zitat von Aurus:
[Fehler] Unit1.pas(41): Inkompatible Typen: 'K6NSerial.TBaudrate' und 'Unit1.TBaudrate'
Zitat von himitsu:
Nein, er muß die Definition nutzen, mit welcher auch K6NSerial1.Baudrate deklariert wurde.

Ansonsten sind es unterschiedliche Typen und demnach nicht zuweisungskompatibel.

Zitat:
Der Type "TBaudrate" ist genau so im Source der Komponete definiert.
"genauso" ist nicht "identisch" und Delphi besteht auf identische Deklarationen.

PS: Nur weil mein Clon genauso aussieht wie ich, sind wir nicht die Selben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 18:54
Du nutzt auch 2 verschiedenen TBaudrate. Wie gesagt darfst du das nur einmal definieren.

Deine Klasse könnte so aussehen:

Delphi-Quellcode:
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.
Nun hast du TBaudrate in der Klasse definiert. Ich finde das sinnvoll, da es funktional zur Klasse gehört.
Von außen musst du nun exakt diese Definition verwenden.

Das kann so aussehen:

Delphi-Quellcode:
uses K6NSerial;

procedure TForm1.Button1Click(Sender: TObject);
var
  M6NSerial1: TK6NSerial;
  MyBR: TK6NSerial.TBaudrate;
begin
  M6NSerial1 := TK6NSerial.Create;
  // ...
  MyBR := br_000110;
  M6NSerial1.Baudrate := MyBR;
  // ...
end;
Dann hast du TBaudrate ein einziges mal definiert und verwendet exakt diese Definition überall.

Grüße, Matze
  Mit Zitat antworten Zitat
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#8

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 20:45
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)?
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 20:52
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
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#10

Re: Wie kann ich einen Aufzählungstyp einer Komponente zuwei

  Alt 29. Dez 2009, 21:34
Das ist die Lösung

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyBr :TBaudrate;
begin

  MyBr :=br_000050;
  K6NSerial1.Baudrate := MyBr;

end;
So einfach war die Sache. Komisch dass mir das nicht vorher eingefallen ist.

Danke für eure Hilfe

Gruss

Aurus

[edit=Matze]Und wieder die [delphi]-Tags vergessen ... MfG, Matze[/edit]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz