Hallo alle zusammen,
ich habe bei euch schon oft helfende Informationen gefunden, aber jetzt muss ich doch aktiv fragen:
Ich habe vor Daten zwischen einem Delphi-Programm (exe) und einem Webservermodul (
dll fürn iis) auszutauschen. Ich habe MMF ausgewählt, nur leider hänge ich hier schon beim ausprobieren fest.
Zusammengeklauter Code zum Initialisiren in IIS-Modul:
Delphi-Quellcode:
procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
//MapFile erstellen falls noch nicht vorhanden
MapHandle:= CreateFileMapping($FFFFFFFF,
nil,PAGE_READWRITE,0,Sizeof(TData),MapName);
If MapHandle > 0
then
Begin
//Auf den Speicherbereich zugreifen
PData := MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
else
Begin
raise exception.create('
Mapfile konnte nicht geöffnet werden.');
End;
End
else
begin
raise exception.Create('
Mapfile konnte nicht erstellt werden.');
end;
end;
Definitionen:
Delphi-Quellcode:
Const MapName = 'Austausch';
Type TData = Packed Record
Ready : Boolean;
Data2 : String[20];
End;
PTData = ^TData;
...
private
MapHandle: THandle;
PData: PTData;
Aufruf:
response.Content:=pdata.Data2;
Destroy:
Delphi-Quellcode:
UnMapViewOfFile(PData);
CloseHandle(MapHandle);
Nun habe ich noch das Programm, welches (eigentlich) in diese MMF schreiben soll (änderung bei aufruf: PData.Data2 := Edit1.Text;).
Wenn ich das Programm mehrfach starte klappt (zwischen den programmen) alles, mit dem Webservermodul auch (also, wenn ich statt Programm die
DLL mehrfach lade).
Sobald ich die
DLL ausführen lasse und (unter dem Adminstratorkonto) das Programm starte bekomme ich die Meldung "'Mapfile konnte nicht erstellt werden.'"
Ich kann mir nicht helfen - wisst ihr weiter??
mfg
Lucas