![]() |
Angeblich nicht deklariert ?!
Hallo,
ich hab das Problem, dass angeblich alles ab br19200 nicht deklariert ist, aber ist es doch oder?
Delphi-Quellcode:
TBaudrate = (br1200, br2400, br4800, br9600, [b]br19200, br38400, br57600[/b]);
Delphi-Quellcode:
Ich weiß nicht, was es sein könnte.
case (theVerbParam.Baudrate) of
br1200: comPort.Baud := 1200; br2400: comPort.Baud := 2400; br4800: comPort.Baud := 4800; br9600: comPort.Baud := 9600; br19200: comPort.Baud := 19200; br38400: comPort.Baud := 38400; br57600: comPort.Baud := 57600; end; |
Re: Angeblich nicht deklariert ?!
TBaudrate gibt es 2x in deinem Code. Wenn 'TBaudrate' in der Unit 'FooBar' deklariert ist, dann deklariere 'theVerbParam.Baudrate' als 'Foobar.TBaudrate'.
|
Re: Angeblich nicht deklariert ?!
Hab ich das nicht?
Delphi-Quellcode:
TBaudrate = (br1200, br2400, br4800, br9600, br19200, br38400, br57600);
Delphi-Quellcode:
TVerbParam = record
...... Baudrate: TBaudrate; ...... |
Re: Angeblich nicht deklariert ?!
Möglicherweise gibt es aber eine 2. davon abweuichende Deklaration des Typs.
|
Re: Angeblich nicht deklariert ?!
Hallo,
Zitat:
Bsp.
Delphi-Quellcode:
unit_2;
unit_1;
interface TBaudrate = (br1200, br2400, br4800, br9600, br19200, br38400, br57600); uses unit_1;
Delphi-Quellcode:
Durch das unit_1.TBaudrate legst du explizit fest,
TVerbParam = record
...... Baudrate: unit_1.TBaudrate; ...... das der Typ aus unit_1 verwendet werden soll. Ich hätte einfach TMyBaudrate geschrieben. Heiko |
Re: Angeblich nicht deklariert ?!
Aber die beiden Dinge sind doch in derselben Unit.
|
Re: Angeblich nicht deklariert ?!
Die andere Variante aber nicht! :zwinker:
|
Re: Angeblich nicht deklariert ?!
Hallo,
aha, gleiche Unit, könnte man ja auch mal hinschreiben ! ;) also nochmal, gleiche unit_1 unit_1 TBaudrate = XXX record Baudrate: unit_1.TBaudrate; Grund könnte sein, dass eine der Units im Interface TBaudrate auch definiert, dann gilt diese als 1. Am einfachsten mache es per TMyBaudrate oder TBaudrate_. PS: Ab D2009 giibt es namespaces, die sowas verhindern. unit_1.TBaudrate ist eigentlich auch schon sowas. Heiko |
Re: Angeblich nicht deklariert ?!
Aber wie kommt es dass ein Teil (bis br9600) angeblich deklariert ist?
|
Re: Angeblich nicht deklariert ?!
Zitat:
|
Re: Angeblich nicht deklariert ?!
Hallo,
Zitat:
Kommentier mal den Code ab br9600 aus, dann Ctrl + linke Maustaste auf TBaudrate, dann sollte die IDE in die Unit springen, wo es für den Compiler definiert ist. Viell. reicht es auch, die Maus darüber zu ziehen (Tool-Tip). Hast du das unit_1.TBaudrate denn schon mal ausprobiert ? Heiko |
Re: Angeblich nicht deklariert ?!
Zitat:
Wenn ich mir den Hinweis anzeigen lassen (mit Maus drüber fahren) steht das da :
Delphi-Quellcode:
type DGLoabls.TBaudrate: br1200..br57600 - DGloabls.pas
|
Re: Angeblich nicht deklariert ?!
Hallo,
da hast du die Unit, die es schon definiert hat. Falls sie nicht im Interface deiner eigenen Unit steht, wird sie von einer der Interface-Units selber referenziert. Aber: ein unit_1.TBaudrate in deinem Record muss funktionieren. Zeig doch mal deine komplette Unit. Heiko |
Re: Angeblich nicht deklariert ?!
Wäre zu viel... Die Unit, wo die Var deklariert sind, hatte ich eingebunden in der Unit, wo ich sie benutze
|
Re: Angeblich nicht deklariert ?!
Hallo,
was steht eigentlich, wenn du per Maus auf br1200 im Case gehst ? Ich denke, auch dort nimmt er das aus der anderen Unit. Als Trick könntest deine TBaudrate Definition in eine eigene Unit packen und die als erstes in Interface-Teil reinpacken. U.U. funktioniert dann aber die andere Unit nicht ... #update:# Was passiert eigentlich, wenn du das TBaudrate ins Implementation packst ? Oder du machst folgendes:
Delphi-Quellcode:
#update2:#
type
TBaudRate = Integer; const c_br1200 = 0; c_br2400 = 1; Hast du den Qellcode der DGloabls Unit ? Ist dort der 19200 definiert ? Heiko |
Re: Angeblich nicht deklariert ?!
Hallo
Zitat:
Zitat:
Doch 2 Units ? Heiko |
Re: Angeblich nicht deklariert ?!
Zitat:
Zitat:
|
Re: Angeblich nicht deklariert ?!
Delphi-Quellcode:
Das steht in Unit1 und das:
TBaudrate = (br1200, br2400, br4800, br9600, br19200, br38400, br57600);
TVerbParam = record Baudrate: TBaudrate;
Delphi-Quellcode:
in Unit2. Unit1 habe ich in Unit2 eingebunden
case (theVerbParam.Baudrate) of
br1200: comPort.Baud := 1200; br2400: comPort.Baud := 2400; br4800: comPort.Baud := 4800; br9600: comPort.Baud := 9600; br19200: comPort.Baud := 19200; br38400: comPort.Baud := 38400; br57600: comPort.Baud := 57600; end; |
Re: Angeblich nicht deklariert ?!
Hallo,
Und das folgende hast du schon versucht ?
Delphi-Quellcode:
Ansonsten, ohne (nicht funktionierendes) Minimal-Bsp. ist dir nicht zu helfen.
TVerbParam = record
Baudrate: Unit1.TBaudrate; Auf jeden Fall ist es ein Typ-Konflikt mit einem gleichlautenden Typ einer anderen Unit (DGlobals). Was für ein Delphi hast du denn ? Wie sieht TBaudrate in der DGlobals aus ? Heiko |
Re: Angeblich nicht deklariert ?!
ja,das hab ich probiert.
delphi6 hab ich. mich wundert es halt nur, dass die ertsten 4 def erkannt werden und die letzten 3 nicht... :?: :?: :?:
Delphi-Quellcode:
so sieht das in DGlobals.pas aus
TBaudrate = (br1200, br2400, br4800, br9600, br19200, br38400, br57600);
|
Re: Angeblich nicht deklariert ?!
Hallo,
packe mal die DGlobals.pas als erstes in deine beiden (units) rein, und lasse deine TBaudrate weg. Es könnte sein, dass noch eine Unit TBaudrate definiert und dort halt nur die ersten 4. Kannst dich ja mal per grep (wingrep emfehle ich) durch die Units graben. BTW: Bei der damaligen Umstellung von D2 auf D5 hatten die plötzlich eine Unit Types, ich musste meine dann umbenennen (in MyTypes). Heiko |
Re: Angeblich nicht deklariert ?!
habs an erste stelle gepackt,aber kein unterschied.
Hab mich durchgegraben,aber keine überschneidende deklaration gefunden.. verzweifel gleich. |
Re: Angeblich nicht deklariert ?!
Zitat:
|
Re: Angeblich nicht deklariert ?!
ja,hab ich auch schon gemacht..aber weiterhin so
|
Re: Angeblich nicht deklariert ?!
Hallo,
komplett umbenannt ? type TMyBaudrate = (_br1200, _br2400, _br4800, _br9600, _br19200, _br38400, _br57600); Da kommt mir übrigens ein schlimmer Verdacht ;) Kann es sein, dass in deinem case statt br19200 ein brl9200 steht ??? also statt der 1 ein kleines L ? Heiko |
Re: Angeblich nicht deklariert ?!
Ja, alles umbenannt und nein leider kein kleines L anstatt ner 1
|
Re: Angeblich nicht deklariert ?!
Hallo,
auch im case ? Zeig noch mal den jetzigen Code. Du machst irgendwas anderes verkehrt. Was passiert, wenn du nur den 19200er case mal auskommentierst. Ich glauhbe, helfen können wir nur, wenn du ein Minimal-Bsp. hier reinstellst, das sich ohne die >=19200 (auskommentierst) kompilieren lässt. Viell. solltest du genauso mal beginnen. Kommentier alles aus, was für das Zeigen des Problems nicht notwendig ist, vor allem jegliche nicht nötigen Units. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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