Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - C-Compileranweisung - Äquivalent in Delphi?


Sunshine - Fr 31.01.03 21:25
Titel: C-Compileranweisung - Äquivalent in Delphi?
Hallo Leute,
ich bin grad dabei, just for fun ein in C geschriebenes Programm nach Delphi zu konvertieren. Die eigentliche Anwendung ist kein Problem, doch bei der Dll habe ich ein Problem. Der Original Quellcode ist:


Quelltext
1:
2:
3:
4:
5:
6:
7:
// start shared data between processes
#pragma data_seg("Shared")
HHOOK g_hook = NULL;
DWORD g_threadID = 0;
HWND  g_hwnd = 0;
#pragma data_seg()
// end shared data


Die Compileranweisung ist hier nötig, damit die 3 Variablen in einem Addressraum gespeichert werden, in den auch andere Prozesse zugreifen können.
Doch wie ist die Compileranweisung in Delphi??? Denn ohne funkts leider nicht...
Wer kann mir helfen?


AndyB - Sa 01.02.03 00:18

Delphi kann keine Shared-Segmente erzeugen. Entweder du nutzt für diesen Fall Memory Mapped Files (vorrangig im PageFile), oder du schaust dir mal diesen [http://www.delphipraxis.net/viewtopic.php?t=2154&highlight=shared] Lösungsweg an.


Delete - Sa 01.02.03 00:42

LOL:
http://www.delphipraxis.net/viewtopic.php?t=2154&highlight=
Ich habe es erstmal sein lassen.

Ups, das ist ja der gleiche Link. :oops:


Sunshine - Sa 01.02.03 21:27

Vielen Dank für die Antworten und den Link.
Bis jetzt bekomms ich aber leider noch nicht hin. Ist ja noch schwieriger als ich am Anfang dachte... Ich versuch nochmal mein Glück in den nächsten Tagen.
Traurig zugeben zu müssen, daß Delphi in dieser Hinsicht "schlecht" ist und kein shared segment erzeugen kann.
@Luckie : Falls du es jemals hinbekommst, wäre es super wenn du mich benachrichtigen würdest.


AndyB - So 02.02.03 01:20

Luckie hat folgendes geschrieben:
Ich habe es erstmal sein lassen.

Aus Zeitmangel, oder hat etwas nicht funktioniert?


Delete - So 02.02.03 01:25

Beides.


DaFox - So 02.02.03 04:37

Hi.

In Delphi ist es üblich in diesen Fällen auf MMFs zurückzugreifen. Warum tut Ihr das nicht? Ich kenne zwar Petr Vones Code/Lösung auch, habe diese aber weder schon einmal benutzt noch in irgendeinem Delphicode gesehen.
Ich persönlich muss sagen, dass ich nach einigem Fluchen sehr gerne mit MMFs arbeite, eben gerade aus dem Prozessgrenzengrund.

Gruß,
Markus


Delete - So 02.02.03 05:24

Ich kenne und habe auch Source ohne MMF's, nur bin ich da noch nicht durchgestiegen, was der da gemacht hat. Aber bevor hier nach dem Source gefragt wird, ich habe mich dazu verpflichtet ihn nicht weitergeben!


DaFox - So 02.02.03 21:03

Luckie hat folgendes geschrieben:

Aber bevor hier nach dem Source gefragt wird, ich habe mich dazu verpflichtet ihn nicht weitergeben!


Hm, ich verstehe das nicht ganz. Ist diese Methode so revolutionär? Was ist der Nachteil bei MMFs? Geht es etwa nur darum, dass man C++ zeigen möchte "Schau, wir können's genauso gut!"?

Gruß,
Markus


Delete - So 02.02.03 21:15

Das Programm ist nur nicht OpenSource.