Datei kopieren mit Progressbar?
Moderator: Moderatoren
- mini990
- 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?
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???
Gruß Stefan
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???
Gruß Stefan
Re: Datei kopieren mit Progressbar?
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.
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.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Datei kopieren mit Progressbar?
ich nehme zum kopieren unter Windows den Explorer. die dazu notwendigen Methoden
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
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 )
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
Jimmy
- Herbert
- 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?
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...
Immer in Bewegung...
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Datei kopieren mit Progressbar?
JA, du hast Recht.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.
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
Jimmy
- mini990
- 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?
Guten Morgen,
habe es jetzt mal mit den Explorer Funktionen probiert.
Kann man Dateien auch ohne Nachfrage überschreiben?
Gruß Stefan
habe es jetzt mal mit den Explorer Funktionen probiert.
Kann man Dateien auch ohne Nachfrage überschreiben?
Gruß Stefan