Thread View: pl.comp.lang.tcl
3 messages
3 total messages
Started by Bodziu
Wed, 17 Aug 2005 10:52
Kopiowanie plików
Author: Bodziu
Date: Wed, 17 Aug 2005 10:52
Date: Wed, 17 Aug 2005 10:52
5 lines
1003 bytes
1003 bytes
Witam Czy ktoś wie jak można w tcl pokazać postęp kopiowanego pliku?. Bodziu
Re: Kopiowanie plików
Author: Googie
Date: Wed, 17 Aug 2005 19:15
Date: Wed, 17 Aug 2005 19:15
42 lines
2028 bytes
2028 bytes
Bodziu wrote:
> Witam
>
> Czy ktoś wie jak można w tcl pokazać postęp kopiowanego pliku?.
>
A kopiujesz jak? Przez [file copy]? Wtedy nie bardzo się da.
Żeby pokazać postęp to trzeba posłużyć się nieco bardziej wyrafinowanym
sposobem:
proc progress {in out bytes {errMsg {}}} {
if {$errMsg != ""} {
puts "Błąd: $errMsg"
} else {
puts "Skopiowano [incr ::Bytes($in) $bytes] bajtow."
if {[eof $in]} {
puts "Zakonczono kopiowanie."
close $in
close $out
}
}
}
set in [open plik1 r]
set Bytes($in) 0
# Poniższa linia opcjonalnie, jeśli plik jest binarny a nie tekstowy
fconfigure $in -translation binary -encoding binary
set out [open plik2 w]
# Poniższa linia analogicznie do linii 2
fconfigure $out -translation binary -encoding binary
fcopy $in $out -command [list progress $in $out] -size 4096
Trzeba zwrócić uwagę, że [fcopy] z opcją -command działa w tle, zatem
niezbędna jest pętla zdarzeń - jeśli skrypt jej dotychczas nie używał,
to zaraz po [close $out] należy dodać linię [set ::done 1] a na końcu
skryptu: [vwait done]
--
Pozdrawiam (Greetings)!
Googie
Re: Kopiowanie plików
Author: Googie
Date: Wed, 17 Aug 2005 19:16
Date: Wed, 17 Aug 2005 19:16
10 lines
1092 bytes
1092 bytes
Googie wrote: > fcopy $in $out -command [list progress $in $out] -size 4096 A ta wielkość - 4096 - to sobie wybrałem. To są "kawałki", czyli liczba bajtów, po skopiowaniu której [fcopy] wywoła komendę progress. -- Pozdrawiam (Greetings)! Googie
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads