Datei kopieren mit Progressbar?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Datei kopieren mit Progressbar?

Beitrag von mini990 »

Hallo,
Progressbar bei Index oder DBF kopieren funktioniert bei mir.
Wie kann man eine Fortschrittsanzeige beim Kopieren beliebiger Dateien generieren?
Gibt's da was und ich finde es nur wieder mal nicht??? :roll:

Gruß Stefan
DelUser01

Re: Datei kopieren mit Progressbar?

Beitrag von DelUser01 »

Hallo Stefan,

wenn Du Dir eine Funktion schreibst mit FOpen, FRead, FWrite usw. kannst Du anhand der Größe der zu kopierenden Datei und der Größe Deines festgelegten Schreib-/Lese-Buffers den Progress-Balken steuern.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Datei kopieren mit Progressbar?

Beitrag von AUGE_OHR »

ich nehme zum kopieren unter Windows den Explorer. die dazu notwendigen Methoden

Code: Alles auswählen

   INLINE METHOD Move()   ; ::nOp := 0x0001 ; return ( ::Start() == 0 )
   INLINE METHOD Copy()   ; ::nOp := 0x0002 ; return ( ::Start() == 0 )
   INLINE METHOD Delete() ; ::nOp := 0x0003 ; return ( ::Start() == 0 )
   INLINE METHOD Rename() ; ::nOp := 0x0004 ; return ( ::Start() == 0 )
findet man in der SHfile API.
Phil Ide hat ein Demo mit BAP gemacht was in der ASCN "sein sollte"
Pablo hat mit ot4xb die Class TShFileOperation geschrieben.

natürlich kann du es auch in "pure" Xbase++ mit FOPEN()/FCREATE()/FREAD()/FWRITE() machen und meinen DXE_Progressbar verwenden.

Tip : Puffer Grösse und Progressbar in 1% Schritten "abstimmen"

Code: Alles auswählen

// siehe Help File FWRITE() Beispiel

   // nur 1% Schritte
   nEvery  := INT(nMax/100)
   // modify
   cBuffer := Space( nEvery )
   nBytes  := nEvery
   // modify
   DO WHILE FError() == 0 .AND. nSum < nMax
      // modify
      nBytes := FRead( nSource, @cBuffer, nEvery )
      FWrite( nTarget, Left(cBuffer, nBytes) )

      // sum bytes
      nSum += nBytes
      FORproggress(oProgress,nEvery,nSum)
   ENDDO
gruss by OHR
Jimmy
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Datei kopieren mit Progressbar?

Beitrag von Herbert »

Es ist besser, nicht bei jedem Fwrite den Progressbaraufruf zu machen, sondern etwa jedes oder je nach Grösse jedes 50. Mal, sonst verliertst du Performance.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Datei kopieren mit Progressbar?

Beitrag von AUGE_OHR »

Herbert hat geschrieben:Es ist besser, nicht bei jedem Fwrite den Progressbaraufruf zu machen, sondern etwa jedes oder je nach Grösse jedes 50. Mal, sonst verliertst du Performance.
JA, du hast Recht.
in diesem Fall hatte ich schon Puffer Grösse und Progressbar in 1% Schritten "abgestimmen"

sonst wäre es so

Code: Alles auswählen

FUNCTION FORproggress(oProgress,nEvery,i)
LOCAL nValue := i
   // only 1% Step
   IF ((nValue) % (nEvery)) == 0
      nValue := oProgress:GetData()
      nValue += nEvery
      oProgress:SetData( nValue )
   ENDIF
RETURN .T.
gruss by OHR
Jimmy
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Datei kopieren mit Progressbar?

Beitrag von mini990 »

Guten Morgen,
habe es jetzt mal mit den Explorer Funktionen probiert.
Kann man Dateien auch ohne Nachfrage überschreiben?

Gruß Stefan
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Datei kopieren mit Progressbar?

Beitrag von mini990 »

Hat sich erübrigt.......
wer lesenkann... :-)

Gruß Stefan
Antworten