Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi UNION in C++ -> Delphi? (https://www.delphipraxis.net/147752-union-c-delphi.html)

Alter Mann 15. Feb 2010 17:03


UNION in C++ -> Delphi?
 
Hallo

habe hier ein Deklarationsproblem. Wie bekommen diese C-Union nach Delphi?
Code:
typedef union {
  [case(VSS_OBJECT_SNAPSHOT)]
    VSS_SNAPSHOT_PROP Snap;
  [case(VSS_OBJECT_PROVIDER)]
    VSS_PROVIDER_PROP Prov;
} VSS_OBJECT_UNION;
Diese Umsetzung erzeugt nur Fehlermeldungen:
Delphi-Quellcode:
  VSS_OBJECT_UNION = packed record
    case Integer of
      3 : (Snap : VSS_OBJECT_SNAPSHOT);   //VSS_OBJECT_SNAPSHOT
      4 : (Prov : VSS_PROVIDER_PROP);     //VSS_OBJECT_PROVIDER
    end;
  end;
Warum?

Vielen Dank für Tipps unf Hinweise

Alter Mann

implementation 15. Feb 2010 17:07

Re: UNION in C++ -> Delphi?
 
Muss es nicht so heißen:
Delphi-Quellcode:
VSS_OBJECT_UNION = packed record
    case Integer of
      3 : (Snap : VSS_SNAPSHOT_PROP); // Hier
      4 : (Prov : VSS_PROVIDER_PROP);
  end;
// end;
[EDIT]Unter Berücksuchtigung von guinnes' Beitrag angepasst.[/EDIT]

guinnes 15. Feb 2010 17:08

Re: UNION in C++ -> Delphi?
 
Das 2. End ist zuviel ( Case in Records benötigen kein End )
Delphi-Quellcode:
  VSS_OBJECT_SNAPSHOT = Integer;
  VSS_PROVIDER_PROP  = Pointer;
  VSS_OBJECT_UNION = packed record
    case Integer of
      3 : (Snap : VSS_OBJECT_SNAPSHOT);   //VSS_OBJECT_SNAPSHOT
      4 : (Prov : VSS_PROVIDER_PROP);     //VSS_OBJECT_PROVIDER
    end;

Alter Mann 15. Feb 2010 17:24

Re: UNION in C++ -> Delphi?
 
Hi,

schnelle Antwort, aber beide nicht die Lösung.

Die Meldungen lauten:
Zitat:

VSS_OBJECT_UNION = packed record
case Integer of
3 : (Snap : VSS_OBJECT_SNAPSHOT); E2029: '..' erwarted, aber ')' gefunden
4 : (Prov : VSS_PROVIDER_PROP); E2029: '..' erwarted, aber ')' gefunden
end;
Zwischen beiden moniert er die '4' und schreibt E2029:')'erwartet, aber Zahl gefunden.

Viele Grüße

Jaynder 15. Feb 2010 17:55

Re: UNION in C++ -> Delphi?
 
Dann muss dein Fehler vor dem zitieren Text liegen. Schreib mal direkt davor "type" und versuche es noch mal.

Delphi-Quellcode:
type
VSS_OBJECT_SNAPSHOT = Integer;
  VSS_PROVIDER_PROP  = Pointer;
  VSS_OBJECT_UNION = packed record
    case Integer of
      3 : (Snap : VSS_OBJECT_SNAPSHOT);   //VSS_OBJECT_SNAPSHOT
      4 : (Prov : VSS_PROVIDER_PROP);     //VSS_OBJECT_PROVIDER
    end;
lässt sich jedenfalls problemlos übersetzen.

implementation 15. Feb 2010 18:19

Re: UNION in C++ -> Delphi?
 
Ich denke nach wie vor, dass es so heißen müsse:
Delphi-Quellcode:
const
  VSS_OBJECT_SNAPSHOT = 3;
  VSS_OBJECT_PROVIDER = 4;
type
  VSS_SNAPSHOT_PROP = XYZ;
  VSS_PROVIDER_PROP = UVW;
  VSS_OBJECT_UNION = packed record
    case Integer of
      VSS_OBJECT_SNAPSHOT:
        (Snap : VSS_SNAPSHOT_PROP); // <- VSS_SNAPSHOT_PROP
      VSS_OBJECT_PROVIDER:
        (Prov : VSS_PROVIDER_PROP);
    end;

hoika 15. Feb 2010 18:30

Re: UNION in C++ -> Delphi?
 
Hallo,

also folgendes geht

Delphi-Quellcode:
type
  TRec = packed record
    case Integer of
      3: (i: Integer);
      4: (d: Double);
  end;
Delphi-Quellcode:
type
  TRec = record
    case Integer of
      0:
        (i: Integer; j: Integer);
      1: (d: Double);
  end;
Wie ist denn
VSS_SNAPSHOT_PROP und VSS_PROVIDER_PROP definiert ??



Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 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