![]() |
Datei mit Fortschrittsanzeige Kopieren
Wie kann ich das realisieren?
Bitte helft mir ist wirklich dringend!! mfg, und frohe Weihnachtszeit wünscht euch, miniKeks :wink: |
Re: Datei mit Fortschrittsanzeige Kopieren
Datei kopieren geht so:
Delphi-Quellcode:
jetzt kannst du ja mit filesize(f) die soll-Größe von f ermitteln.
var
f,t:file of byte; buf:array[1..4096] of byte; read:integer; begin assignfile(f,from); //Datei from zuweisen assignfile(t,to); //Datei to zuweisen reset(f); //Datei from öffnen rewrite(t); //Datei to erstellen/überschreiben while not eof(f) do begin //solange die Datei from nicht am Ende ist blockread(f,buf,length(buf),read); //lese aus Datei from in Variable buffer, und zwar länge(buffer) Bytes. Anzahl der tatsächlich gelesenen Bytes in read. blockwrite(t,buf,read); //Schreibe in Datei to aus Buffer und zwar [anzahl der gelesenen bytes] bytes. end; closefile(f); //Schliesse Dateien closefile(t); end; folglich kannst du mit [filesize(t) {bereits geschriebene Bytes } / filesize(f) {Anzahl zu schreibender Dateien}] den Prozentsatz berechnen. Mit Fortschrittsaktualisierung sieht die Funktion also so aus:
Delphi-Quellcode:
var
f,t:file of byte; buf:array[1..4096] of byte; read:integer; begin assignfile(f,from); assignfile(t,to); reset(f); rewrite(t); while not eof(f) do begin blockread(f,buf,length(buf),read); blockwrite(t,buf,read); progressbar1.progress:=round(100*filesize(t)/filesize(f)); application.processmessages; //Bildschirm aktualisieren bzw. Buttonklicks ausführen etc. end; closefile(f); closefile(t); end; |
Re: Datei mit Fortschrittsanzeige Kopieren
Der Windows-Weg (MIT Fortschrittsanzeige):
![]() |
Re: Datei mit Fortschrittsanzeige Kopieren
:wall:
Aber wenn ich windows das ganze Zeugs erledigen lasse habe ich nicht so viel Kontrolle darüber (was klickt der User jetzt an, ...) Außerdem kann ich sowas in einem Setup oder so auch nicht brauchen. Bei SHFileOperation springt nämlich diese Windows-Fortschrittsanzeige auf (wie beim Explorer). |
Re: Datei mit Fortschrittsanzeige Kopieren
Zitat:
|
Re: Datei mit Fortschrittsanzeige Kopieren
|
Re: Datei mit Fortschrittsanzeige Kopieren
Zitat:
|
Re: Datei mit Fortschrittsanzeige Kopieren
Nicht vergessen die Attribute einer Datei und das Änderungsdatum der kopierten Datei mitzugeben, dass bleibt ja unverändert...
Gruß Pfoto |
Re: Datei mit Fortschrittsanzeige Kopieren
Hallo, ich habe mal eine kurze Frage zu dem Script. Und zwar muss ich eine recht große zip Datei kopieren, nur leider funktioniert der Fortschrittsbalken nicht.
Die Datei beträgt 56.579 KB. Folgender Fehler tritt auf: Kopiervorgang startet, 0% - 36%, dann -35% - 0%, dann 1% - 26%. Warum? |
Re: Datei mit Fortschrittsanzeige Kopieren
Wenn du uns jetzt noch verräts von welchen Quellcode du redest und wie du ihn umgesetzt hast, kann man dir auch helfen. ;)
|
Re: Datei mit Fortschrittsanzeige Kopieren
Der im ersten BEitrag. Mit fortschrittsanzeige. Ich habe Ihn genau so wie er dort steht reinkopiert um das ganze mal zu testen.
|
Re: Datei mit Fortschrittsanzeige Kopieren
Moin,
vor folgender Anforderung stehe ich aktuell: * Ich möchte ein ganzes Verzeichnis recrusiv kopieren. * Ein ProgresBar soll den Fortschritt anzeigen. * Ein Abbrechen oder ähnliche Benutzeraktionen sollen nicht möglich sein. Aktuell gehe ich über SHFileOperation mit den bekannten Nachteilen. Zukünftig möchte ich gerne den ProgresBar in meiner Anwendung anzeigen lassen. Ich habe schon einiges probiert, leider komme ich nicht auf den richtigen Zweig. Vielleicht kann mir $jemand helfen... Gruß mogway |
Re: Datei mit Fortschrittsanzeige Kopieren
Hallo und Willkommen mogway!
hier im Forum oder auch auf anderen Seiten (z.B. swissdelphicenter.ch) gibt es Funktionen, um rekursive Ordner einzulesen. Die resultierenden Dateien kannst du dann an die von Lucke verlinkte Klasse übergeben wo, wenn ich mich erinnere, als Beispiel nur 1 Datei kopiert wird. Der Maximalwert des Fortschrittsbalkens für das gesamte noch rekursiv zu lesene Verzeichnis ist schwer festzulegen, da ja noch nichts von seiner Größe bekannt ist. Stattdessen könnte man dem User als Ausgabe das jeweils eingelesene Verzeichnis und nur den Fortschritt einer einzelnen Datei anzeigen. Gruß Pfoto |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz