AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Enumeration nach Delphi 5 geändert?

Ein Thema von Bomberbb · begonnen am 23. Jul 2010 · letzter Beitrag vom 23. Jul 2010
Antwort Antwort
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#1

Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 07:35
Delphi-Version: 2005
Hallo,

ich möchte einen fremden Quelltext mit Delphi 5 kompilieren. Da meckert der Compiler folgendes an:
Delphi-Quellcode:
 type
   TSuit = (Hearts=13, Diamonds, Clubs=22, Spades);
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?
p.s.: Es handelt hierbei um eine automatisch generierte Unit, die den Zugriff auf eine DLL ermöglicht.

Gruß

BBB

Geändert von mkinzler (23. Jul 2010 um 07:44 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 07:44
Wie lautet die genaue Fehlermeldung?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#3

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 07:47
Hi!

Redest du wirklich von D5 oder D2005 wir oben angegeben?


Liebe Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#4

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 07:49
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 08:23
Wird denn irgendwo im Quelltext mit Ord() auf die zugewiesenen Werte zugegriffen? Ansonsten lass die Zuweisung doch testhalber ganz weg.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 08:28
Delphi-Quellcode:
 type
   TSuit = (Hearts=13, Diamonds, Clubs=22, Spades);
Bei Delphi 5 ist es leider nicht möglich, die Werte bei einem Aufzählungstyp vorzugeben.
Workaround:
Delphi-Quellcode:
const
 Hearts=13;
 Diamonds=14;
 Clubs=22;
 Spades=23;
type
   TSuit = Integer;
Das kann natürlich im Code weitere Änderungen nötig machen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 08:43
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 09:19
oder
Delphi-Quellcode:
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);
@DeddyH: die 0..2 sind Falsch und auch der Else-Block ist nicht sicher, vorallem in SuitValue

Delphi-Quellcode:
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;
aber besser so:
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, ...)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Jul 2010 um 09:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 09:28
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#10

AW: Enumeration nach Delphi 5 geändert?

  Alt 23. Jul 2010, 10:13
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:
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);
hab ich auch schon gedacht, allerdings gibt es auch solche Definitionen in der Unit:

Code:
TPlatformid = (ePlfmNone = $00000000,ePlfmAll = $0001013F);
und spätestens da stehe ich dumm da...
  Mit Zitat antworten Zitat
Antwort Antwort


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:31 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