|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vlad 2:5020/400 26 Feb 2001 20:41:23 To : All Subject : время выполнения подпрограммы -------------------------------------------------------------------------------- Hello All, Hе подскажет ли кто, как определить subj? Ситуация следующая: имеется программа на Perl/Tk, которая отправляет e-mail, во время отправки выскакивает окошко с прогресс-баром и показывает, как проходит процесс отправки (ну как в The Bat). Окну этому нужно знать только одну переменную, значение которой должно постепенно увеличиваться. Брать значение, я полагаю, нужно или из количества передаваемых байт (используется NET::SMTP) или времени выполнения подпрограммы. И в первом, и во втором случае возникает вопрос: как? Может быть я не в ту сторону думаю? Помогите разобраться. Вот приблизительный код: #!/usr/bin/perl use Tk; use Tk::Balloon; use Tk::ProgressBar; use Net::SMTP; my $w_main = MainWindow->new( -height => 169, -width => 205); $w_main->title('Почтовая программа'); my $mail = $w_main->Entry( -relief => "sunken", -background => "#00FF80", -justify => "center"); $mail->place( -x => 95, -y => 30, -height => 20, -width => 106); my $message = $w_main->Text( -background => "#00FF80"); $message->place( -x => 3, -y => 54, -height => 84, -width => 198); my $send_but = $w_main->Button( -text => "Послать сообщение", -relief => "raised", -activebackground => "#FFFF80", -command => \&sendmessage); $send_but->place( -x => 3, -y => 143, -height => 21, -width => 170); $w_main->geometry('205x169'); MainLoop; sub sendmessage{ my $percent; # Здесь, судя по всему, и нужно каким-то образом # инкрементировать переменную до 100 ###################################### &progress ($percent); my $body = $message -> get("1.0", "end"); my $addres = $mail -> get(); my $mailhost="smtp.host"; my $recipient="$addres"; my $sender="your\@mail.com"; my $smtp = Net::SMTP->new("$mailhost"); $smtp->mail("$sender"); $smtp->to("$recipient"); $smtp->data(); $smtp->datasend("To: $recipient"); $smtp->datasend("\n"); $smtp->datasend("$body\n"); $smtp->dataend(); $smtp->quit; } sub progress { my ($percent_done)=@_; my $w_progress = $w_main->Toplevel( -height => 20, -width => 200); $w_progress->title('Идет отправка...'); my $progress = $w_progress->ProgressBar(-width => 200, -height => 20, -from => 0, -to => 100, -blocks => 10, -colors => [0, 'green', 50, 'yellow' , 80, 'red'], -variable => \$percent_done); $progress->place( -x => 0, -y => 0, -height => 20, -width => 200); $w_progress->geometry('200x20'); $w_progress->focus; } -- Best regards, VLAD mailto:vlad@niko.kiev.ua Отправлено через сервер Talk.Ru - http://www.talk.ru --- ifmail v.2.15dev5 * Origin: NIKO (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/648844f5f44b.html, оценка из 5, голосов 10
|