Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
Delphi 2010 Professional
|
28. Mai 2003, 13:34
Falls es interessiert - ich nutze folgende Funktion zum Senden über Mailslots:
Delphi-Quellcode:
function Netsend(Server, Reciever, Sender, Msg : String) : Boolean;
function SendToMailSlot(Server, Slot, Data : String) : Boolean;
var hToSlot : THandle;
BytesWritten : DWord;
begin
Result := False;
hToSlot := CreateFile(PChar('\\' + Server + '\mailslot\' + Slot), GENERIC_WRITE,
FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hToSlot = INVALID_HANDLE_VALUE then Exit;
try
BytesWritten := 0;
if (not WriteFile(hToSlot, Pointer(pchar(Data))^, length(Data), BytesWritten,nil)) or (BytesWritten <> dword(length(Data))) then Exit;
result := True;
finally
CloseHandle(hToSlot);
end;
sleep(5);
end;
var j : integer;
sDummy, sOld : string;
begin
if length(msg) > 128 then begin
sOld:=msg;
while length(sOld) > 128 do begin
sDummy := ReverseString(copy(sOld, 1, 128));
j := pos(' ', sDummy);
if j > 0 then
sOld := ReverseString(copy(sDummy, 1, j-1)) + copy(sOld, 129, length(sOld))
else
sOld := copy(sOld, 129, length(sOld));
Result := SendToMailSlot(Server, sc_Mailslot, Sender + #0 + Reciever + #0 +
ReverseString(copy(sDummy, j+1, length(sDummy))));
end;
Result := SendToMailSlot(pchar(Server), sc_Mailslot, Sender + #0 + Reciever + #0 + sOld);
end else if length(msg) > 0 then
Result := SendToMailSlot(Server, sc_Mailslot, Sender + #0 + Reciever + #0 + msg)
else result := true;
end;
Ob der Fehler ( IP) in dieser Funktion liegt oder im Aufruf kann ich zum jetzigen Zeitpunkt noch nicht sagen. Bin gerade noch an einem anderen Projekt dran.
MfG Hitzi
[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]
Thomas
|
|
Zitat
|