AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datei mit Fortschrittsanzeige auf einen Ftp-Server hochlade
Thema durchsuchen
Ansicht
Themen-Optionen

Datei mit Fortschrittsanzeige auf einen Ftp-Server hochlade

Ein Thema von Dark-L0rd · begonnen am 29. Jul 2004 · letzter Beitrag vom 16. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
Dark-L0rd

Registriert seit: 29. Jul 2004
9 Beiträge
 
Delphi 7 Enterprise
 
#1

Datei mit Fortschrittsanzeige auf einen Ftp-Server hochlade

  Alt 29. Jul 2004, 18:42
Hi,

Ich bin dabei ein Programm zu schreiben, mit dem man Dateien auf einen Ftp-Server laden kann.
Nun verzweifele ich aber an der Fortschrittsanzeige...
Ich weiß net wie ich das lösen kann...

Code zum hochladen:
Delphi-Quellcode:
procedure Tbg3.upClick(Sender: TObject);
var i: Integer;
begin
      if bg1.adresse1.Text = 'then break;
      idftp1.Disconnect;
      idftp1.Host := bg1.adresse1.Text;
      idftp1.Username := bg1.user1.Text;
      idftp1.Password := bg1.pass1.Text;
      try
        idftp1.Connect(true,10000);
        if idftp1.Connected then
        begin
          for i := 0 to 9 Do
          begin
            if ser_dat1[i] = 'then break;
            idftp1.put(ser_dat1[i],ser_dat1[i]);
          end;
        end;
      except
        raise;
      end;
end;
Code zum kopieren zweier Dateien mit Fortschrittsanzeige:
Delphi-Quellcode:
procedure TForm1.CopyFileWithProgressBar1(Source, Destination: string);
var
  FromF, ToF: file of byte;
  Buffer: array[0..4096] of char;
  NumRead: integer;
  FileLength: longint;
begin
  AssignFile(FromF, Source);
  reset(FromF);
  AssignFile(ToF, Destination);
  rewrite(ToF);
  FileLength := FileSize(FromF);
  with Progressbar1 do
  begin
    MinValue := 0;
    MaxValue := FileLength;
    while FileLength > 0 do
    begin
      BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
      FileLength := FileLength - NumRead;
      BlockWrite(ToF, Buffer[0], NumRead);
      Progress := Progress + NumRead;
    end;
    CloseFile(FromF);
    CloseFile(ToF);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  CopyFileWithProgressBar1('d:\blub.txt', 'c:\blabla.txt');
end;
Wie kann ich das jetzt kombinieren??? Oder geht das ganz anders???
Schon mal Danke für die Hilfe!
---MfG--
Dark-L0rd
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 29. Jul 2004, 19:07
Hi,

das geht ganz anders, schau Dir mal beim den Indy Demos, die FTP-Demo an, damit sollte Dir geholfen sein.

Desweiteren schau Dir mal bei der IdFtp Kompo, die Ereignisse und BeginWork und OnEndWork an, vielleicht reicht Dir das schon.
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Dark-L0rd

Registriert seit: 29. Jul 2004
9 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 29. Jul 2004, 19:56
Ok, werde ich machen...
Danke für die schnelle Antwort.
---MfG--
Dark-L0rd
  Mit Zitat antworten Zitat
Dark-L0rd

Registriert seit: 29. Jul 2004
9 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 30. Jul 2004, 09:20
Das funzt aber, irgendwie net, so wie ich das gemacht habe...


Delphi-Quellcode:
procedure Tbg3.upClick(Sender: TObject);
var i: Integer;
begin
      if bg1.adresse1.Text = 'then exit;;
      idftp1.Disconnect;
      idftp1.Host := bg1.adresse1.Text;
      idftp1.Username := bg1.user1.Text;
      idftp1.Password := bg1.pass1.Text;
      try
        idftp1.Connect(true,10000);
        if idftp1.Connected then
        begin
          for i := 0 to 9 Do
          begin
            if ser_dat1[i] = 'then break;
            idftp1.put(ser_dat1[i],ser_dat1[i]);
          end;
        end;
      except
        raise;
      end;
end;

procedure Tbg3.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
  begin
  if AWorkCountMax > 0 then ProgressBar1.Max := AWorkCountMax;
end;

procedure Tbg3.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  ProgressBar1.Position := AWorkCount;
end;

procedure Tbg3.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  ProgressBar1.Position := 0;
end;
Wo ist da der Denk-Fehler???
Schon mal Danke für die Hilfe.
---MfG--
Dark-L0rd
  Mit Zitat antworten Zitat
Dark-L0rd

Registriert seit: 29. Jul 2004
9 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 30. Jul 2004, 09:51
Oh... Ich habe meinen Denkfehler gefunden...
Ich habe vergessen die Proceduren OnWorkBegin, OnWork, OnWorkEnd in die Ereignisse von idftp zu schreiben...

Aber noch eine andere Frage...
Ich wollte zwei Statusbars verwenden, denn wenn man z.b. zwei Dateien auf einen Server lädt, dann wollte ich eine Statusbar mit dem Status der gerade hochladene Datei und eine andere mit dem Status vom hochladen auf Server.

Kann man das irgendwie machen mit der Server-Statusbar?
---MfG--
Dark-L0rd
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 30. Jul 2004, 11:22
Klar,

bevor Du mit dem hochladen/runterladen beginnst, ermittelst Du vorher die komplette Gesamtgrösse der Dateien merkst Dir diese Größe und setzt jetzt genauso wie bei der jetzigen Statusbar den Fortschritt.
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Dark-L0rd

Registriert seit: 29. Jul 2004
9 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 30. Jul 2004, 13:01
Danke...
Das is soweit klar, aber wie setze ich dann immer die aktuelle Position der Statusbar des Servers?
---MfG--
Dark-L0rd
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 30. Jul 2004, 22:24
Hi,

Du nimmst zwei Variablen z.b. :

iFileSizeGesamt : Cardinal;
iFileProgressGesamt : Cardinal;

Wie schon gesagt vor begin des Transfers ermittelst Du die Gesamtfilegröße, speicherst diese in iFileSizeGesamt und im OnWork Ereignis erhöhst Du einfach immer die iFileProgressGesamt uns setzt die Statusbar.
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Dark-L0rd

Registriert seit: 29. Jul 2004
9 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 31. Jul 2004, 09:22
Danke...

Aber irgendwoe zeigt er die größe der Files net richtig an!

So bestimme ich dir Filegröße:
Delphi-Quellcode:
for i := 0 to 9 Do
   begin
    if ser_dat1[i] = 'then break;
    AssignFile(F, ser_dat1[i]);
    reset(F);
    FileSizeAll := FileSizeAll + FileSize(F);
    CloseFile(F);
    files := files + 1;
   end;
Und danach setzte ich einfach eine Label Capition auf die Größe:

size2.Caption := IntToStr(FileSizeAll); Wo ist denn da der Fehler? oder kann man die Datei größe anders besser ermitteln?

Außerdem friert mein Programm immer ein, wenn es anfängt eine Datei hochzuladen? Was kann man dagegen machen?
---MfG--
Dark-L0rd
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#10

Re: Datei mit Fortschrittsanzeige auf einen Ftp-Server hoch

  Alt 31. Jul 2004, 17:48
hast du FileSizeAll irgendwo auch auf 0 gesetzt?

zum einfrieren:
mach mal ein paar application.Processmessages rein!
am besten in die schleife
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz