Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Баг перла или кривые руки 
:(
    Опции темы
wolter
Дата 2.3.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



Суть проблеммы такова 
вот код
Код

#!/usr/bin/perl
use strict;
use Win32::GUI;
use threads;

my $thr;
my $icon = new Win32::GUI::Icon('w.ico');
my $main = Win32::GUI::Window->new(
    -name    => "Main",
    -title   => "Win32-GUI: Doevents-Demo",
    -left    => 100,
    -top     => 100,
    -width   => 100,
    -height  => 100,
  );

sub Main_Terminate() {
    print "Main window terminated\n";
    return -1;
}

my $but = $main->AddButton(
    -name   => "but",
    -tip   => "кнопка",
    -left   => 5,
    -top    => 5,
    -width  => 39,
    -height => 39,
    -icon => $icon,
    -align => 'center',

);

$main->Show();

Win32::GUI::Dialog();

sub but_Click {

my $thr = threads->create('fc')->detach;

}

sub fc{

print "ok\n";

}

Что делает код, я думаю говорить не стоит сложного нет ничего, но при отроботки трейда пропадают все графические элементы, также пропадает AddNotifyIcon, вообщем любой графики это касаеться,  почитам доки,  я не нашел нигде инфи об этом, может ктото сталкивался или кто то может подсказать как с этим бороться, я пробовал в конце потока присвоить все графические элементы по новой, это помогло, но это не выход, допустим AddNotifyIcon таким способов вернуть нельзя
PM MAIL   Вверх
PanamOS
Дата 2.3.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Пример работает вообще нестабильно. Иногда валится с ошибкой.
Пропадает стабильно только после второго нажатия.

Это сообщение отредактировал(а) PanamOS - 2.3.2008, 23:25
PM MAIL   Вверх
wolter
Дата 2.3.2008, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



У меня ошибок не выдает, это скорее все у тебя просто версия перла не та, у меня ActivePerl 5.8.8 Build 822
PM MAIL   Вверх
PanamOS
Дата 2.3.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



user posted image

Это сообщение отредактировал(а) PanamOS - 2.3.2008, 23:44
PM MAIL   Вверх
wolter
Дата 2.3.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



на старой версии ругался на "->detach", но без него не как иначе трейд засерают памят просто буржуйсими количиствами, у трейдов вообще не очень хорошо с чисткой из памяти после отроботки

Добавлено через 57 секунд
хммм... интиресно взглянуть на скрин

Добавлено через 12 минут
 Win32::GUI::DestroyWindow($oself->{-handle}) if exists $oself->{-handle}; это и есть та самая 3354 строка в модуле GUI.pm
это я так понимаю перл гураеться потому что само окно было не корекно закрыто, а закрыто оно было потому как перл вызывает ошибку, это собстевенно и есть сама проблемма только ты ее показал на картинке.
PM MAIL   Вверх
PanamOS
Дата 2.3.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Цитата(wolter @  2.3.2008,  23:38 Найти цитируемый пост)
Win32::GUI::DestroyWindow($oself->{-handle}) if exists $oself->{-handle}; это и есть та самая 3354 строка в модуле GUI.pm
это я так понимаю перл гураеться потому что само окно было не корекно закрыто, а закрыто оно было потому как перл вызывает ошибку

Ну что это деструктор окна я тоже глянул, вопрос лишь в том, почему это окно решило не корректно закрыться))
PM MAIL   Вверх
wolter
Дата 2.3.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



ну и + почемуто сама графика рубиться ....

Добавлено через 2 минуты и 48 секунд
PanamOS, у меня есть очень простая гипотиза на это тему, коллега, дело в том что после первой отроботки трейда он почему убивает (или вычищает содиржание переменной $icon, хотя в полной версии кода рубить все и вся) так вот, сзаеться мне что само маин окно и вырубаеться по этой причине, потому что не находит тех элементов кооторые должны быть
PM MAIL   Вверх
PanamOS
Дата 3.3.2008, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



wolter, ну тогда это происходило бы сразу, а так это происходит когда как, иногда можно очень устать нажимать кнопочку, а иногда мгновенно)) Например для этого скрина я нажимал очень долго. Возможно проблема только у меня, спорить не буду)) А графика стабильно пропадает только после второго нажатия на кнопку, но не сразу.
PM MAIL   Вверх
wolter
Дата 3.3.2008, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



По поводу ошибки закрития окно согласен, мне тоже надо очень долго и быстро клацать кнопку чтобы это случилось, хотя в скомпилировоной верчии этого не происходить, а по поводу графики проподает после первого сробатывание трейда, в этом можно убедиться, нажав 1 раз накнопку и потом простоо изменить размер окна разтенув его мышкой, но то что это происходить из-за detach я уверен на 100% потому как если его убрать все работает отлично, но память при этом жреться в гиометрической прогресси 
PM MAIL   Вверх
PanamOS
Дата 3.3.2008, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Видать проблема в реализации самого Win32::GUI.
Сделал как вариант, но тоже далеко не выход из ситуации:
Код

#!/usr/bin/perl

use strict;
use Win32::GUI;
use threads;
use threads::shared; 

my %hash  : shared;
$hash{'do'} = 0;
$hash{'exit'} = 0;

my $thr = threads->create('fc');

my $icon = new Win32::GUI::Icon('1.ico');

my $main = Win32::GUI::Window->new(
    -name    => "Main",
    -title   => "Win32-GUI: Doevents-Demo",
    -left    => 100,
    -top     => 100,
    -width   => 100,
    -height  => 100,
  );

my $but = $main->AddButton(
    -name   => "but",
    -tip   => "кнопка",
    -left   => 5,
    -top    => 5,
    -width  => 39,
    -height => 39,
    -icon => $icon,
    -align => 'center',
);

$main->Show();
Win32::GUI::Dialog();

sub Main_Terminate() {
    print "Main window terminated\n";

    $hash{'exit'} = 1;
    $thr->join();

    return -1;
}


sub but_Click {
    $hash{'do'}++;
}


sub fc{
 while (!$hash{'exit'}){
  if ($hash{'do'}) {
    print "ok\n";
    $hash{'do'}--;
  } else {
    select(undef, undef, undef, 0.01);
  }
 }
}

PM MAIL   Вверх
wolter
Дата 3.3.2008, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



PanamOS, Я нечто подобное тоже пытался приминиться но, ты прав это не вориант, интиресно разработчики языка наврено вообще не подозривали что мы вот так будет стибаться на языком.
Твой вориант очень подходить для небольшого кода, ну а если будет форма с десятком кнопок или больше, хотя как вориант можно использовать next if PanamOS, я тебе очень блогодарен, но обидно немного что мы так и не позначи всех тайн языка и не попали в касту просвещенных
PM MAIL   Вверх
shamber
Дата 3.3.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



 smile 
wolter, вы  из Индии?
как мне кажется касты только там сохранились ;)
PM MAIL Jabber   Вверх
wolter
Дата 3.3.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



shamber, А вам лижбы нафлудить ))))
PM MAIL   Вверх
shamber
Дата 3.3.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



...

Это сообщение отредактировал(а) shamber - 3.3.2008, 16:29
PM MAIL Jabber   Вверх
PanamOS
Дата 3.3.2008, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Цитата(wolter @  3.3.2008,  08:41 Найти цитируемый пост)
но обидно немного что мы так и не позначи всех тайн языка и не попали в касту просвещенных 

Ну так вроде ничего не мешает продолжить познания, просто на работу же надо ходить тоже))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.