Autor Beitrag
Sunshine
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 31.01.03 21:25 
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:

ausblenden 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?

_________________
-= Dreaming of Lloret 2001 =-
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: 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 Lösungsweg an.

_________________
Ist Zeit wirklich Geld?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 01.02.03 00:42 
LOL:
www.delphipraxis.net...=2154&highlight=
Ich habe es erstmal sein lassen.

Ups, das ist ja der gleiche Link. :oops:
Sunshine Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.

_________________
-= Dreaming of Lloret 2001 =-
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: So 02.02.03 01:20 
Luckie hat folgendes geschrieben:
Ich habe es erstmal sein lassen.

Aus Zeitmangel, oder hat etwas nicht funktioniert?

_________________
Ist Zeit wirklich Geld?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 02.02.03 01:25 
Beides.
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 02.02.03 21:15 
Das Programm ist nur nicht OpenSource.