![]() |
Delphi-Version: 2005
Enumeration nach Delphi 5 geändert?
Hallo,
ich möchte einen fremden Quelltext mit Delphi 5 kompilieren. Da meckert der Compiler folgendes an:
Delphi-Quellcode:
Es scheint so, als ob D5 mit den Zuweisungen nicht klar kommt. Ab welcher Version geht das? Und wie bekomme ich das unter D5 zu laufen?
type
TSuit = (Hearts=13, Diamonds, Clubs=22, Spades); p.s.: Es handelt hierbei um eine automatisch generierte Unit, die den Zugriff auf eine DLL ermöglicht. Gruß BBB |
AW: Enumeration nach Delphi 5 geändert?
Wie lautet die genaue Fehlermeldung?
|
AW: Enumeration nach Delphi 5 geändert?
Hi!
Redest du wirklich von D5 oder D2005 wir oben angegeben? Liebe Grüße, Frederic |
AW: Enumeration nach Delphi 5 geändert?
Sorry, ist definitiv D5. Wir haben zwar die 2005 hier liegen, sie aber nie wirklich installiert...
Die Fehlermeldung ist: [Fehler] UnitDll.pas(406): ',' oder ')' erwartet, aber '=' gefunden |
AW: Enumeration nach Delphi 5 geändert?
Wird denn irgendwo im Quelltext mit Ord() auf die zugewiesenen Werte zugegriffen? Ansonsten lass die Zuweisung doch testhalber ganz weg.
|
AW: Enumeration nach Delphi 5 geändert?
Zitat:
Workaround:
Delphi-Quellcode:
Das kann natürlich im Code weitere Änderungen nötig machen.
const
Hearts=13; Diamonds=14; Clubs=22; Spades=23; type TSuit = Integer; |
AW: Enumeration nach Delphi 5 geändert?
Oder man schreibt sich 2 Mapping-Funktionen.
Delphi-Quellcode:
type
TSuit = (Hearts, Diamonds, Clubs, Spades); function OrdValue(Suit: TSuit): integer; begin case Suit of Hearts: Result := 13; Diamonds: Result := 14; Clubs: Result := 22; else Result := 23; end; end; function SuitValue(Value: integer): TSuit; begin case Value of 0, 13: Result := Hearts; 1, 14: Result := Diamonds; 2, 22: Result := Clubs; else Result := Spades; end; end; |
AW: Enumeration nach Delphi 5 geändert?
oder
Delphi-Quellcode:
@DeddyH: die 0..2 sind Falsch und auch der Else-Block ist nicht sicher, vorallem in SuitValue :warn:
TSuit = (dummy0, dummy1, dummy2, dummy3, dummy4, dummy5, dummy6, dummy7,
dummy8, dummy9, dummy10, dummy11, dummy12, Hearts, Diamonds, dummy15, dummy16, dummy17, dummy18, dummy19, dummy20, dummy21, Clubs, Spades);
Delphi-Quellcode:
aber besser so:
function OrdValue(Suit: TSuit): integer;
begin case Suit of Hearts: Result := 13; Diamonds: Result := 14; Clubs: Result := 22; Spades Result := 23; else raise exception // oder notfalls 'nen defaultwert end; end; function SuitValue(Value: integer): TSuit; begin case Value of 13: Result := Hearts; 14: Result := Diamonds; 22: Result := Clubs; 23: Result := Spades; else raise exception // oder notfalls 'nen defaultwert end; end;
Delphi-Quellcode:
function OrdValue(Suit: TSuit): integer;
begin Result := Byte(Suit); end; function SuitValue(Value: integer): TSuit; begin Result := TSuit(Byte(Value)); // eventuell auch Result := TSuit(Value); end; // Byte eventuell an die Datengröße anpassen (Word, LongWord, Integer, ...) |
AW: Enumeration nach Delphi 5 geändert?
Die 0..2 hatte ich deshalb mit drin, falls doch versehentlich der tatsächliche Ordinalwert und nicht der gemappte übergeben wird. Und Defaultwerte hab ich schließlich auch, alles, was nicht passt, wird zu Pik.
|
AW: Enumeration nach Delphi 5 geändert?
na, so ein mist. hab jetzt gedacht, ich installier mir fix D2005, aber das hat wohl probleme mit win7x64. Mal schauen, ob ich es irgendwann schaffe den quelltext zu kompilieren.
An diese definition
Code:
hab ich auch schon gedacht, allerdings gibt es auch solche Definitionen in der Unit:
TSuit = (dummy0, dummy1, dummy2, dummy3, dummy4, dummy5, dummy6, dummy7,
dummy8, dummy9, dummy10, dummy11, dummy12, Hearts, Diamonds, dummy15, dummy16, dummy17, dummy18, dummy19, dummy20, dummy21, Clubs, Spades);
Code:
und spätestens da stehe ich dumm da...
TPlatformid = (ePlfmNone = $00000000,ePlfmAll = $0001013F);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 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