Schrift
[thread]4712[/thread]

Dateigröße während des Kopiervorgangs anzeigen



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Crian
 2004-02-02 11:43
#46807 #46807
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Du könntest zum Beispiel mit Tk::repeat alle x Millisekunden nachsehen, wie groß die Datei inzwischen ist und Deinen Fortschrittsbalken ändern. (Ev. einfach dadurch, dass Du eine Variable an das Skalenelement bindest, in der Du die Größe ablegst (oder die Größe geteilt durch Zielgröße, Skalenelement dann auf 1 skaliert...)

Ich verschieb den Thread mal ...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
jane_templar
 2004-02-02 08:17
#46808 #46808
User since
2003-11-26
23 Artikel
BenutzerIn
[default_avatar]
Hallo, hallo,

ich habe ein Perl-TK Programm mit dem ich verschiedenste Dateien kopiere.
Jetzt möchte ich eine Progressbar einbauen, dien mir bei jeder einzelnen Datei den kopiervorgang anzeigt.

Wie kann ich während des Kopiervorgangs (mit File::Copy)ständig die Dateigröße der Zieldatei abfragen, um sie Anzeigen zu können??

Danke,
JanE
jane_templar
 2004-02-02 12:25
#46809 #46809
User since
2003-11-26
23 Artikel
BenutzerIn
[default_avatar]
Hi Crian,

Danke erstmal, werde es heute Abend mal ausprobieren und morgen kurz bescheid geben, ob es funktioniert hat.

Ciao,
JanE
jane_templar
 2004-02-03 07:39
#46810 #46810
User since
2003-11-26
23 Artikel
BenutzerIn
[default_avatar]
Hallo, hallo,

ich habe diese Möglichkeit probiert, doch leider passiert in der Zeit, in der der Kopiervorgang läuft gar nichts mit der Anzeige.
Um Fehler bei der Anzeige zu vermeiden, habe ich alle 500 ms ein Wort ausgeben lassen. Dieses Wort kommt vor und nach dem Kopiervorgang alle 500 ms (soweit ich diese Zeit abschätzen kann), doch während des Vorgangs wird kein Wort ausgegeben.
Es werden auch nicht mehrere gleichzeitig ausgegeben, wie es zu Beispiel der Fall währe, wenn nur die Anzeige nicht aktualisiert wird.
havi
 2004-02-03 07:40
#46811 #46811
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Poste doch mal deinen Code...

Gruss
jane_templar
 2004-02-03 08:58
#46812 #46812
User since
2003-11-26
23 Artikel
BenutzerIn
[default_avatar]
Muß ich mir erst die richtigen Zeilen zusammensuchen, wird etwas dauern....


Gruß
JanE
jane_templar
 2004-02-03 09:40
#46813 #46813
User since
2003-11-26
23 Artikel
BenutzerIn
[default_avatar]
Hier ein Test-Code.
Je größer die Datei ist, umso besser wird der Effekt sichtbar.
Die kopierte Datei muß für weitere Tests gelöscht werden(sonst nicht mehr sichtbar), die Ausgabe sieht man in dazugehörigen Fenster.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use strict;
use Tk;
use File::Copy;

sub KopierTest;
sub Ausgabe;

my $Zahl = 0;
my $QuellFile = "C:\\test.txt";
my $ZielFile = "C:\\test1.txt";

my $MainWindow = MainWindow->new;
$MainWindow->title("test");
my $StartButton = $MainWindow->Button (
-text => "starte den Test",
-command => sub {
KopierTest;
}
)
->pack (
-fill=>'both',
-padx=>10,
-pady=>10,
);
$MainWindow->repeat(100, \&Ausgabe);

MainLoop;
sub KopierTest {

copy ($QuellFile, $ZielFile);

}
sub Ausgabe {
print "Hallo, ich bin der TEST Nummer $Zahl\n";
$Zahl++;
}


Gruß,

JanE

Edit @havi: Code-Tags eingefuegt\n\n

<!--EDIT|havi|1075795202-->
Crian
 2004-02-03 11:31
#46814 #46814
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Na klar, Du startest ja auch KopierTest vor der MainLoop :-)

starte es nach der MainLoop (über Tk::After mit 500 ms oder so)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2004-02-03 11:34
#46815 #46815
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Statt

Code: (dl )
1
2
3
-command => sub { 
KopierTest;
}


kannst Du übrigens

Code: (dl )
-command => \&KopierTest


schreiben, aber das nur btw.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ptk
 2004-02-03 12:53
#46816 #46816
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Crian,03.Feb..2004, 10:31]Na klar, Du startest ja auch KopierTest vor der MainLoop :-)
[/quote]
Nein, KopierTest wird schon richtig gestartet. Leider blockiert copy(), so dass kein Update waehrend des Kopiervorgangs stattfindet. Die Antwort darauf lautet ueblicherweise: fork, threads, background system, fileevent, POE, Tk::ExecuteCommand etc....\n\n

<!--EDIT|ptk|1075805634-->
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-02-02 11:43.