🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.tcl
Article #170

Re: Kopiowanie plików

#170
From: Googie
Date: Wed, 17 Aug 2005 19:15
42 lines
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
Technical Details
Message-ID: <ddvr1t$s6j$1@nemesis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <ddv4sm$77i$1@atlantis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: Googie <googie@nospam.org>
Newsgroups: pl.comp.lang.tcl
Subject: Re: Kopiowanie plików
Date: Wed, 17 Aug 2005 19:15:01 +0000
Organization: tp.internet - http://www.tpi.pl/
Lines: 42
Message-ID: <ddvr1t$s6j$1@nemesis.news.tpi.pl>
References: <ddv4sm$77i$1@atlantis.news.tpi.pl>
NNTP-Posting-Host: tf18.internetdsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1124298621 28883 80.55.109.18 (17 Aug 2005 17:10:21 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Wed, 17 Aug 2005 17:10:21 +0000 (UTC)
User-Agent: KNode/0.9.2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit