Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler in Record-Ausrichtung bei Übergabe an Visual C DLL (https://www.delphipraxis.net/1917-fehler-record-ausrichtung-bei-uebergabe-visual-c-dll.html)

jbg 3. Jan 2003 22:34

Also eine Verbindung zwischen 2 TempObjects bekomme ich hin. Wenn es mehrere werden, dann kommt nur eine AV. Hast du ein funktionierendes C(++) Beispiel für die Verbundungen. Denn der Beispiel C++ Code, den du mir geschickt hast, fügt nur TempObjects hinzu und entfernt sie wieder.

jbg 3. Jan 2003 23:43

Liste der Anhänge anzeigen (Anzahl: 1)
Eines würde mich mal interessieren. Wer hat denn diese Header-Übersetzung geschrieben? Der "BOOL -> Boolean" Fehler ist noch der kleinste. Was ich gerade feststellen musste, ist, dass Delphi die Aufzählungstypen in 1 Byte quetscht, wohingegen C++ 4 Bytes beansprucht. Somit stimmt der Typ TTempConnect nicht mehr. Nachdem ich die Headerdatei überarbeitet habe. Läuft das Verbindung Setzen reibungslos.

Da du schriebst, dass du Delphi 5 einsetzt, war es natürlich nicht gerade leicht, eine geeignete Möglichkeit zu finden, einen Aufzähungstyp auf 4 Byte zu erweitern. Unter Delphi 6 ginge dies ganz einfach so:
Delphi-Quellcode:
TMapColorIndex = (MCI_..., ..., MCI_TRIM_TO_32BIT=$0fffffff);
Unter Delphi 5 geht dies nicht. Und da ich keine Lust hatte für jeden Wert eine Konstante mit laufender Nummer zu schreiben (bei 270 Zeilen schreibe ich mir ja die Finger wund). habe ich einen kleinen Zwischen Record gebaut.
Delphi-Quellcode:
_TMapColorIndexType =
  (MCI_BUILDUP_INNER,
  MCI_WATER_INNER, ...);

TMapColorIndex = packed record
  case Integer of
    0: (Value: _TMapColorIndexType);
    1: (Int: Integer);
end;
Setzen kann man nun die einzelnen Werte über das Feld Value:
Delphi-Quellcode:
var m: TMapColorIndex;
m.Value := MCI_BUILDUP_INNER;

oki 4. Jan 2003 13:19

Hallo jbg,

ich habe gerade einen roten Kopf bekommen.

Die Header-Datei habe ich übersetzt. Vielleicht können wir das noch ein bischen runterspielen damit ich nicht ganz so dumm dastehe.

Ich habe leider nie in C programmiert und so sind meine Kenntnisse auch im Bereich der Deklarationen für C sehr stümperhaft.

Zu meiner Ehrenrettung sei gesagt, dass ich meine übersetzte Headerdatei den C-Leuten zukommen lassen hab. Die haben alles für o.k. befunden. Offensichtlich sind die in Delphi genauso blass wie ich in C.

Beispiel-Code für Verbindungen in C habe ich leider nicht. Ich denke aber der tut nach deiner zweiten Nachricht wohl nicht mehr zur Sache.

Jetzt dann mal eine Frage hinterher:

Kann mann den Eintrag im Record nicht als DWord-Typ deklarieren und bei der Verwendung über Type-casting füllen?
Somit würde ich einfach folgendes tun:

toc_collor := DWord(MCI_ROUTE_NORMAL);

o.k. schon mal unendlichen Dank. Ich teste mal den Rest, bis dann

Olaf[/delphi]

jbg 4. Jan 2003 13:23

Das kann man schon. Nur wollte ich genau dieses Typecasten verhindern. Aber wenn es dir gefällt, dann musst du nur die Deklarationen abändern.

oki 5. Jan 2003 15:18

Hallo jbg,

ich schreibe gerade meine Quellen um und räume in meinem Programm etwas auf.
Deine Quellen habe ich getestet und sie laufen auch bei mir. Komischerweise wird bei mir aber nicht der eingefügte Text über den Verbindungslinien ('Start', '1', ...) angezeigt. Offentsichtlich ist da noch was im Busch!
Ich melde mich noch mal wenn ich mit meinem Standardprogramm weiter bin.

Gruß Olaf


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Seite 3 von 3     123   

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