Autor Beitrag
artelogic
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Fr 14.03.08 22:04 
user profile iconFrEaKY hat folgendes geschrieben:
Senden (beim client):
Naja und für die Fortschrittsanzeige
ausblenden 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):

ausblenden 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.