Autor Beitrag
Timbo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 166



BeitragVerfasst: Mo 03.07.06 19:27 
Hallo,

ich kannmit dem Client wunderbar Dateien übertragen, wollte nun noch einen Progressbar bauen.
OnWorkBegin wird ausgelöst, aber OnWork wird nicht ausgelöst, woran kann das liegen?

Vielen Dank.
Tim.
alleinherrscher
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 03.07.06 20:00 
Welches OnWork benutzt du denn?

Wenn du das IdTCPClient.OnWork benutzt, nimm das IdTCPClient.Socket.OnWork, das müsste funktionieren
Timbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 166



BeitragVerfasst: Mi 05.07.06 02:12 
Danke für die Antwort...
Diese Funktion gibt es, aber wo finde ich die denn im OI?
Nützt ja nichts, wenn ich die Funktion aufrufe... muss ja vom Programm aufgerufen werden. Oder hab ich da was falsch verstanden?
alleinherrscher
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 05.07.06 10:43 
user profile iconTimbo hat folgendes geschrieben:
Danke für die Antwort...
Diese Funktion gibt es, aber wo finde ich die denn im OI?
Nützt ja nichts, wenn ich die Funktion aufrufe... muss ja vom Programm aufgerufen werden. Oder hab ich da was falsch verstanden?


Das ist keine Funktion, sondern ein Event ;) Du musst es vorher definieren, also z.B. bei Form.Create

IdTCPClient1.socket.onwork:=MyOnWorkProcedure(ASender:TObject;AWorkMode:TWorkMode;AWorkCount:Integer);

MyOnWorkProcedure muss natürlich ganz normal per private oder public deklariert werden.

Hoffe, dass es klappt! *DAUMEN HOCH*
Timbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 166



BeitragVerfasst: Mi 05.07.06 11:01 
hier mal zum verständnis ein bißchen Quellcode.
Benutze die IdTcpClient Komponente.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
  with IdTCPClient1 do begin
    Connect;
    ftmpStream := TFileStream.Create('C:\StreamTest.Datei',fmOpenRead + fmShareDenyNone);
    OpenWriteBuffer;
    WriteStream(ftmpStream);
    CloseWriteBuffer;
    FreeAndNil(fTmpStream);
    Disconnect;
  end;


procedure TFArtikel.IdTCPClient1WorkBegin(Sender: TObject;
  AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
  Label1.Caption:= IntToStr(AWorkCountMax);
end;

procedure TFArtikel.IdTCPClient1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  Label2.Caption:= IntToStr(AWorkCount);
end;

end.


WorkBegin wird ausgeführt, aber Work nicht...

Gibt es noch eine andere Möglichkeit den Übertragungsfortschritt heraus zu bekommen?
Timbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 166



BeitragVerfasst: Mi 05.07.06 11:33 
@alleinherrscher:

das event heißt wohl doWork, onWork gibt es nicht...
ausblenden Delphi-Quelltext
1:
IdTCPClient1.socket.dowork:=MyOnWorkProcedure;					


dann sagt der Compiler, bei DoWork:
Not enough actual Parameter
alleinherrscher
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 09.07.06 21:03 
user profile iconTimbo hat folgendes geschrieben:
@alleinherrscher:

das event heißt wohl doWork, onWork gibt es nicht...
ausblenden Delphi-Quelltext
1:
IdTCPClient1.socket.dowork:=MyOnWorkProcedure;					


dann sagt der Compiler, bei DoWork:
Not enough actual Parameter


Was hast du denn für ne Version? Also in Indy10 geht das ;)

DoWork ist (auch in älteren Indy Versionen) kein Event!!!! Das ist also absolut das falsche... von DoWork solltest du (glaube ich) besser die Finger lassen ;)

Grüße