Einzelnen Beitrag anzeigen

Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#5
  Alt 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
  Mit Zitat antworten Zitat