FrEaKY hat folgendes geschrieben: |
Senden (beim client):
Naja und für die Fortschrittsanzeige
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure ser.serWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin inherited; form1.progressbar1.Position := aworkcount; end;
procedure ser.BeginWork( AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin inherited; showmessage('lol'); form1.label3.caption := inttostr((aworkcountmax div 1024))+ ' K'; form1.progressbar1.Max := aworkcountmax; end; |
<- Der teil geht halt nicht, also wird nicht aufgerufen... Warum!! Was ist da falsch=? |
das kannste auch tendenziell mal vergessen. ich hatte dir ja schon vor einiger zeit geantwortet, und das darin angedeutet. aber darauf wollteste ja nicht eingehen...
es geht eher in die richtung (und jetzt seh ich auch gerade, daß es sich um indy 9 handelt, aber mal egal):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure ser.serExecute(AThread: TIdPeerThread); var ts : tfilestream; begin ts := Tfilestream.Create('lmao2transferred.mp3', fmCreate); athread.Connection.RecvBufferSize := 32768; try athread.Connection.OnWorkBegin:=IrgendwasA; athread.Connection.OnWork:=IrgendwasB; athread.Connection.OnWorkEnd:=IrgendwasC;
athread.Connection.OpenWriteBuffer(ts.Size); athread.Connection.ReadStream(ts,-1, true); athread.Connection.ClearWriteBuffer; athread.Connection.CloseWriteBuffer; finally ts.Free; end; end; |
IrgendwasA, -B, und -C müssen aber thread-safe sein, und wenn sie es nicht sind, synchronisiert aufgerufen werden. sonst crasht das hinundwieder oder auch immer. aber wenn das nur mal ein test deiner "übertragungsrate" sein soll, dann kannste das vielleicht in kauf nehmen. aber sauber ist es dann nicht...
und ich befinde mich ein bisschen im blindflug, weil ich indy 9 weder habe noch kenne. das aber nur am rande.