Announcement

Collapse
No announcement yet.

C enum > Delphi (Nachfrage)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • C enum > Delphi (Nachfrage)

    Hallo,

    ich muß mit Delphi5 eine DLL für ein Fremdsystem erstellen.
    Leider liegt mir die Schnittstellenbeschreibung nur in C++ vor, so daß ich die Header-Dateien übersetzen muß.
    Leider weiß ich nicht, wie ich folgende Enum nach Delphi übersetzen kann:
    <pre>
    enum ESpeechRecogResult
    {
    CDL_SPEECH_RECOGNITION = 0,
    CDL_SPEECH_NO_CHANNEL,
    CDL_SPEECH_TT,
    CDL_SPEECH_TIMEOUT,
    CDL_SPEECH_WRONG,
    CDL_SPEECH_RUNNING = 11,
    CDL_SPEECH_OUT_END,
    CDL_SPEECH_INTERMEDIATE_RESULT,
    CDL_SPEECH_STATIC_OPEN = 21
    };
    </pre>

    Unter <a href="/webx?50@@.ee8c91f">Agustin Angeles "C enum, struct und union > Delphi" 22.08.2002 15:48</a> schrieb Robert Marquardt "Fuer Delphi 5 etc setze die Elemente des Enums in Konstanten um...".
    Kann mir jemand ein Beispiel geben, ich bekomme nur die Meldung "Bezeichner redefiniert".

    Danke im voraus

    Andreas

  • #2
    Ich würde es mal so probieren:<pre class="sourcecode"><code>
    <b>type</b>
    ESpeechRecogResult = Integer;
    <br>
    <b>const</b>
    CDL_SPEECH_RECOGNITION = 0;
    CDL_SPEECH_NO_CHANNEL = 1;
    CDL_SPEECH_TT = 2;
    CDL_SPEECH_TIMEOUT = 3
    CDL_SPEECH_WRONG = 4;
    CDL_SPEECH_RUNNING = 11;
    CDL_SPEECH_OUT_END = 12;
    CDL_SPEECH_INTERMEDIATE_RESULT = 13;
    CDL_SPEECH_STATIC_OPEN = 21;
    </code></pre>
    U.U. musst du die Konstanten auch typisieren:<pre class="sourcecode"><code>
    CDL_SPEECH_RECOGNITION: ESpeechRecogResult = 0;
    </code></pre> oder <pre class="sourcecode"><code>
    CDL_SPEECH_RECOGNITION = ESpeechRecogResult(0);
    </code></pre>
    Alles ungetestet und ohne Gewähr :-)
    <br>Uli

    Comment


    • #3
      Typisieren der Konstanten ist nicht noetig

      Comment


      • #4
        Mit obiger Lösung wäre doch aber das Enum noch nicht umgesetzt?
        Ich war der Meinung das ich z.B.<PRE>
        enum EVoiceRecogResult
        {
        CDL_VOICE_RECOGNITION,
        CDL_VOICE_TIMEOUT,
        CDL_VOICE_TT
        };
        </PRE>
        in Delphi so umsetzen müßte:<PRE>
        EVoiveRecogResult =
        (
        CDL_VOICE_RECOGNITION,
        CDL_VOICE_TIMEOUT,
        CDL_VOICE_TT
        );
        </PRE&gt

        Comment


        • #5
          Mit obiger Lösung wäre doch aber das Enum noch nicht umgesetzt?
          Ich war der Meinung das ich z.B.<PRE>
          enum EVoiceRecogResult
          {
          CDL_VOICE_RECOGNITION,
          CDL_VOICE_TIMEOUT,
          CDL_VOICE_TT
          };
          </PRE>
          in Delphi so umsetzen müßte:<PRE>
          EVoiveRecogResult =
          (
          CDL_VOICE_RECOGNITION,
          CDL_VOICE_TIMEOUT,
          CDL_VOICE_TT
          );
          </PRE&gt

          Comment


          • #6
            Der Meinung war ich auch schon. Allerdings hat es bei mir erst geklappt nachdem ich es so gemacht habe, wie es Uli und Robert empfehlen.<p>
            Wer dieses Gerücht in die Welt gesetzt hat, dass man enums in Delphi auch einfach als Aufzählung verwenden kann, weiß ich nicht. ;-)<p>
            Gruß,<br>
            Marku

            Comment


            • #7
              Das C enum laesst sich erst ab Delphi 6 umsetzen, da erst dort individuelle Werte gesetzt werden koennen. Man sollte daher immer Einzelkonstanten nehmen um nicht einen weniger gut ausgeruesteten Delphientwickler zu veraergern. Gibt ma keine expliziten Werte an, so sind die Werte wie es sich fuer einen Ordinaltyp gehoert von 0 aufwwaerts gezaehlt, damit Ord() funktioniert

              Comment


              • #8
                Okay, dann bin ich ein "weniger gut ausgeruesteter Delphientwickler" ;-).<br>Danke für die Info; endlich weiß ich sicher, dass es bei meinem Delphi 5 nicht funktioniert...<p>
                Gruß,<br>
                Marku

                Comment


                • #9
                  Zu den "weniger gut ausgeruesteten" gehöre ich dann wohl auch und werde es also mit den Konstanten realisieren.<br>
                  Danke für Eure Hilfe,

                  Andrea

                  Comment

                  Working...
                  X