Fortschritt Anzeige beim Packen ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
topsoft
Beiträge: 67
Registriert: 16.09.2004 11:55
Wohnort: nrw

Fortschritt Anzeige beim Packen ?

Beitrag von topsoft »

Hallo,
ich habe folgendes kleine Programm:

Code: Alles auswählen

EnableExplicit
UseLZMAPacker()

Structure _statistik
  alleDateien.i
  DateienOk.i
  DateienError.i
EndStructure

Procedure BackupDateien(Path.s, hPack.i, Stammverzeichnisslaenge.i, SubDirectory.i, *Statistik._statistik)
  Protected hDir.i = ExamineDirectory(#PB_Any, Path, "*.*")
  If hDir
    While NextDirectoryEntry(hDir)
      If DirectoryEntryType(hDir) = #PB_DirectoryEntry_Directory And SubDirectory = #True
        If DirectoryEntryName(hDir) <> "." And DirectoryEntryName(hDir) <> ".."
          BackupDateien(Path + DirectoryEntryName(hDir) + "\", hPack, Stammverzeichnisslaenge, SubDirectory, *Statistik)
        EndIf
      ElseIf DirectoryEntryType(hDir) = #PB_DirectoryEntry_File
        If hPack
          Protected Quelle.s = Path + DirectoryEntryName(hDir)
          Protected Ziel.s = Mid(Path + DirectoryEntryName(hDir), Stammverzeichnisslaenge)
          *Statistik\alleDateien + 1
          If AddPackFile(hPack, Quelle, Ziel)
            Debug Quelle + " --> " + Ziel + " OK"
            *Statistik\DateienOk + 1
          Else
            Debug Quelle + " --> " + Ziel + " ERROR"
            *Statistik\DateienError + 1
          EndIf
        EndIf
      EndIf
    Wend
    FinishDirectory(hDir)
  EndIf
EndProcedure

Procedure.i ErstelleBackup(Backupdateiname.s, Startverzeichniss.s, Kompressionslevel.i, SubDirectory.i, *Statistik._statistik)
  Protected hPack.i = CreatePack(#PB_Any, Backupdateiname, #PB_PackerPlugin_Lzma, Kompressionslevel)
  If hPack
    BackupDateien(StartVerzeichniss, hPack, Len(StartVerzeichniss) + 1, SubDirectory.i, *Statistik)
    ClosePack(hPack)
  EndIf
EndProcedure

Define Statistik._statistik
ErstelleBackup("B:\Backup.zip", "C:\Users\Topsoft\Documents\", 9, #True, Statistik)
Debug Str(Statistik\alleDateien) + " Dateien verarbeitet, " + Str(Statistik\DateienOk) + " Dateien gesichert, " + Str(Statistik\DateienError) + " wegen eines Fehlers nicht gesichert."
End
Der Code packt alle Dateien unterhalb des Startpath. Da manche Dateien etwas grösser sind würde ich gern den Fortschritt anzeigen. Gab es da nicht mal "PackerCallback()" ? Kann in der aktuellen Hilfe nichts finden.

Hat jemand eine Idee ?

Gruß Topsoft
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fortschritt Anzeige beim Packen ?

Beitrag von STARGÅTE »

Hallo topsoft,

das PackerCallback wurde irgendwann (weiß nicht mehr ab welcher Version) einfach entfernt, weil es sowieso nicht richtig funktioniert hat.

Die einzige Möglichkeit die ich aktuell sehe ich eine eigene Packer-Funktion zu schrieben, in der du CompressMemory "häppchenweise" die gewünschte Datei komprimieren lässt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten