Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Datei kopieren mit Progressbar?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 326
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.

Datei kopieren mit Progressbar?

Beitrag von mini990 » Fr, 03. Feb 2017 14:33

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

Benutzeravatar
Roland Gentner
1000 working lines a day
1000 working lines a day
Beiträge: 865
Registriert: Fr, 24. Nov 2006 8:30
Wohnort: Neresheim
Kontaktdaten:

Re: Datei kopieren mit Progressbar?

Beitrag von Roland Gentner » Fr, 03. Feb 2017 22:19

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.
Gruß
Roland

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10580
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Datei kopieren mit Progressbar?

Beitrag von AUGE_OHR » Fr, 03. Feb 2017 22:46

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: 1823
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: Datei kopieren mit Progressbar?

Beitrag von Herbert » Sa, 04. Feb 2017 7:36

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: 10580
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Datei kopieren mit Progressbar?

Beitrag von AUGE_OHR » Sa, 04. Feb 2017 9:21

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
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 326
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.

Re: Datei kopieren mit Progressbar?

Beitrag von mini990 » Mo, 06. Feb 2017 9:27

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

Gruß Stefan

Benutzeravatar
mini990
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 326
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.

Re: Datei kopieren mit Progressbar?

Beitrag von mini990 » Mo, 06. Feb 2017 9:29

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

Gruß Stefan

Antworten