So, hab jetzt den halben bis ganzen Tag gebastelt, mein Programm mit Funktionalität ausgestattet, reichlich dazu gelernt, das Ganze zum Laufen bekommen und habe natürlich kurz vor Schluss wieder 1 Problem:
Die Rückgabe der verarbeiteten Daten vom Client zum Server.
Das Problem hatte ich Heute Morgen schomma:
Client sendet die Daten weg (dort sind sie korrekt) und am Server kommen diese "kaputt" an.
Dann wurde mir ja geraten, anstatt die Daten in einer Klasse in einem Record zu speichern und dieses dann weg zu schicken.
Das funktioniert dann auch.
Mein Problem ist jetzt:
Die Daten die ich zurück send möchte, kommen aus einer "Standardfunktion" die ich von mehreren Programmen nutze und jetzt nich ma so eben von Klasse auf Record umprogrammieren kann, da das auch div. andere Programme betreffen würde.
Also wie schaffe ich es, dass ich über SendMessage auch Klassen und nicht nur Records verschicken kann?
Oder geht sowas gar nicht?
Zur Info
Client-Anwendung
Delphi-Quellcode:
// sends the given client-struct to the server
procedure TfrmClient.ipcReturnClient(struct: TClient);
var
dataStruct: TCopyDataStruct;
hServerWnd: HWND;
logMsg:
String;
begin
try
// build copy-struct
dataStruct.dwData := IPC_MSG_RETURN_OUTPUT;
dataStruct.cbData := SizeOf(struct);
dataStruct.lpData := struct;
// um die Struktur geht es
// get server-window
hServerWnd := FindWindowEx(0, 0,
nil, PChar(SERVER_TITLE) );
if hServerWnd <> 0
then
SendMessage(hServerWnd, WM_COPYDATA, Longint(self.Handle), Longint(@dataStruct) );
// hier ist die Struktur noch ok
except
on e:
Exception do
begin
logMsg := '
Fehler bei Rücksendung des Mandanten: ' + e.
Message;
ipcSendStatus(logMsg);
end;
end;
end;
Server-Awendung
Delphi-Quellcode:
// processes the given returned output
procedure TfrmServer.ipcProcessReturnedOutput(dataStruct: PCopyDataStruct);
var
clientStruct: TClient;
begin
clientStruct := dataStruct.lpData; // hier ist die Struktur dann kaputt
if clientStruct <> nil then
begin
returnList.Add(clientStruct);
end;
end;
Danke nochmals
Patrick