Hallöchen,
jetzt hab ich glaube ich den Fehler gefunden, so gehts erst mal überhaupt :
Delphi-Quellcode:
procedure TForm1.ICQClient1SendFileData(Sender: TObject; UIN: Cardinal;
Data: Pointer; var DataLen: Cardinal; var IsLastPacket: Boolean);
begin
DataLen := SendStream.Read(Data^, 256);
edDataLen.Text:=IntToStr(DataLen);
ssPos.Text:=IntToStr(SendStream.Position);
ssSize.Text:=IntToStr(SendStream.Size);
//if SendStream.Position = SendStream.Size then
if DataLen < 256 then
IsLastPacket := True;
end;
Das Problem war anscheinend die Zeile hier :
DataLen := SendStream.Read(Data^, 256);
Das musste auch ein Pointer auf die Daten sein.
Das Problem ist jetzt nur noch das er aufhört zu senden bevor alle daten übertragen sind.
Das Problem ist nur das hier :
IsLastPacket := SendStream.Position = SendStream.Size;
Irgendwie scheint das nicht hinzuhauen.
Ich hab jetzt zum testen mal 3 Edits gemacht in denen die DataLen, SendStream.Position und SendStream.Size angezeigt werden.
Es passiert folgendes :
SendStream.Size zeigt die richtige grösse an,
SendStream.Position steigt an bis SendStream.Size erreicht ist und
DataLen zeigt die aktuelle grösse der Daten an die gesendet werden.
Scheint also alle zu stimmn. Trotzdem kmmt nur die hälfte an.???
Beim kupel sagt ICQ dann immer 'Othr Side has closed the Connection' ...
Hmm, an was könnte das denn jetzt noch liegen ?
Matias