Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 15.10.2016
Сообщений: 25

Timer vs System.Windows.Forms.Timer

30.10.2016, 20:55. Показов 3858. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Занятную штуку недавно обнаружил:
Всем известный Timer из модуля Timers отказывается работать, если подгружается модуль System.Windows.Forms
конструктор Timer перестает понимать t1 := new Timer(10, TimerProc); ругаясь на это следующей строчкой:
Нет конструктора с таким числом параметров
Без модуля System.Windows.Forms всё прекрасно работает, но мне этот модуль в программе нужен....
Вот как теперь сдружить эту братию - ума не приложу....
Пытался заменить Timer на System.Windows.Forms.Timer, но не пойму как написать под него конструктор, там какой то контейнер используется...в общем тёмный лес.....
Что посоветуете?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2016, 20:55
Ответы с готовыми решениями:

Что за классы System, System.Drawing, System.Windows.Forms
Народ, объясните пожалуйста что за классы: System, System.Drawing, System.Windows.Forms. В справке как-то ничего не нашел. Если там есть,...

Windows.Forms - Процедуры, цикл for и System.Windows.Forms.Button
Доброго времени суток. Есть WinForms программа: ... private ClickedButtonId, ClickedButtonX, ClickedButtonY:Integer; ...

System.Drawing и System.Windows.Forms -- как их соединить в одно окно
Вопрос следующий: есть программа, она делится на две части - одна графика, другая текстовое окно. В окно вводится код, который...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,877
Записей в блоге: 12
30.10.2016, 22:51
Лучший ответ Сообщение было отмечено pyatik как решение

Решение

Pascal
1
t1 := new Timers.Timer(10, TimerProc);
1
1 / 1 / 0
Регистрация: 15.10.2016
Сообщений: 25
30.10.2016, 23:15  [ТС]
Спасибо большое! работает
0
0 / 0 / 0
Регистрация: 03.10.2022
Сообщений: 28
03.10.2022, 23:12
Можно полный пример работающего кода бьюсь с тем же
при использовании System.Windows.Forms
не работает конструктор var t := new Timer(100,TimerProc)

uses Timers делаю, простой вызов
t := new Timers.Timer(10, TimerProc);
так же выдает Unit1.pas(80) : Нет конструктора с таким числом параметров

Добавлено через 30 секунд
pyatik, есть возможность прислать решение?
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
03.10.2022, 23:16
Цитата Сообщение от AmAndrey Посмотреть сообщение
простой вызов
t := new Timers.Timer(10, TimerProc);
Странно звучит, вы тоже для начала приведите весь код, в котором это не компилируется. Так, чтобы можно было вставить в IDE и получить эту ошибку.
0
0 / 0 / 0
Регистрация: 03.10.2022
Сообщений: 28
03.10.2022, 23:31
делаю новый проект, в котором по клику хочу запустить таймер

Pascal
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
37
38
39
Unit Unit1;
 
interface
 
uses System, System.Drawing, System.Windows.Forms, Timers;
 
type
  Form1 = class(Form)
    procedure button1_Click(sender: Object; e: EventArgs);
    procedure TimerProc();
  {$region FormDesigner}
  private
    {$resource Unit1.Form1.resources}
    button1: Button;
    {$include Unit1.Form1.inc}
  {$endregion FormDesigner}
  public
    constructor;
    begin
      InitializeComponent;
    end;
  end;
 
implementation
 
procedure TimerProc;
begin
  write(1);
end;
 
 
procedure Form1.button1_Click(sender: Object; e: EventArgs);
begin
  var t := new Timer(100,TimerProc);
  t.Start;
  Sleep(3000);  
end;
 
end.

Unit1.pas(34) : Нет конструктора с таким числом параметров

Добавлено через 1 минуту
Sun Serega, так понятнее?
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
03.10.2022, 23:35
Ну так у вас
Цитата Сообщение от AmAndrey Посмотреть сообщение
t := new Timer
а вы говорите что та же ошибка при
Цитата Сообщение от AmAndrey Посмотреть сообщение
t := new Timers.Timer
1
0 / 0 / 0
Регистрация: 03.10.2022
Сообщений: 28
03.10.2022, 23:46
Pascal
1
2
3
4
5
6
7
8
9
  procedure Form1.button1_Click(sender: Object; e: EventArgs);
begin
  //var t := new Timer(100,TimerProc);
  var t := new Timers.Timer(100,TimerProc);
  t.Start;
  Sleep(3000);   
end;
 
end.
таже ошибка

Добавлено через 17 секунд
Sun Serega, пробовал оба варианта
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
04.10.2022, 00:02
Цитата Сообщение от AmAndrey Посмотреть сообщение
таже ошибка
А я не могу воспроизвести. Потому что я вам сказал
Цитата Сообщение от Sun Serega Посмотреть сообщение
код, в котором это не компилируется. Так, чтобы можно было вставить в IDE и получить эту ошибку.
А вы скинули огрызок от программы, который сам по себе не компилируется.
Ну, я добавил
Pascal
1
2
3
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
{$apptype windows}
И поудалял ссылки к другим файлам - ошибка не воспроизводится.
0
0 / 0 / 0
Регистрация: 03.10.2022
Сообщений: 28
04.10.2022, 00:48
Sun Serega,

путем проб и ошибок выяснил что ошибка начинает появляется если подключить любую из двух библиотек
// uses System.IO.Ports;
// uses System.Threading;


так работает
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses System, System.Windows.Forms, Timers; 
 // uses System.IO.Ports; 
 // uses System.Threading;
 
 
procedure TimerProc;
begin
  write(1);
end;
 
 
begin
  
  var t := new Timer(100,TimerProc);
  // var t := new Timers.Timer(100,TimerProc);
  t.Start;
  Sleep(3000);   
end.
Библиотеки нужны, как быть?
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
04.10.2022, 01:36
Кхм, да, проблемы таки есть. В первую очередь, в справке прописано что если есть конфликт имён - берётся имя из последнего модуля/пространства имён, указанного в uses, но вы нашли пару мест где это криво работает.

1. https://github.com/pascalabcne... ssues/2732
2. https://github.com/pascalabcne... ssues/2733

Однако я всё ещё не вижу примера, где Timers.Timer не работало бы.

Кроме того, System.IO.Ports это не подключение библиотеки.
Библиотека это .dll файл и подключается она или с $reference, или в настройках проекта.

System это пространство имён, с кучей вложенных пространств имён. Стандартные библиотеки .Net (которые не надо отдельно скачивать) обычно добавляет свои типы в них.
Подключать его никогда не обязательно, потому что, к примеру, и без uses System.Windows.Forms можно использовать тип System.Windows.Forms.Form.
Но подключив System.Windows.Forms можно писать значительно короче: Form. Но и System.Windows.Forms.Form всё равно остаётся допустимым именем.

С другой стороны каждый модуль при компиляции создаёт своё пространство имён.
К примеру при подключении модуля uses Timers; - появляется тип Timers.Timer и сразу подключается пространство имён Timers, поэтому обычно достаточно писать Timer вместо Timers.Timer.
Но Timers.Timer всегда будет работать, не зависимо от других подключений.

Добавлено через 3 минуты
И ещё, если вы зажмёте Ctrl и тыкните или на Timers в секции uses, или на любое имя из этого модуля, использованное в .pas файле - вам откроется реализация этого модуля.
А там вы можете увидеть что Timers.Timer это простая обёртка над другим, более продвинутым типом таймера. Который, кстати, будет работать вообще без каких-либо подключений.
0
0 / 0 / 0
Регистрация: 03.10.2022
Сообщений: 28
04.10.2022, 01:47
Sun Serega,

Спасибо за ответ, буду изучать

у меня Timers.Timer не работало, полечил путем установки последней версии PascalABC.NET с версии 2018 года на более свежую от 2022
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2022, 01:47
Помогаю со студенческими работами здесь

System.Drawing и System.Windows.Forms
Гуглил команды для модулей System.Drawing и System.Windows.Forms, но ничего не нашёл. Дадите пж ссылку на список и ли можете сами написать,...

Новые функции для System.Windows.Forms
Делаю модуль для упрощения работы с Windows.Forms То, что уже создал, написал ниже в спойлере. Методы наследованных классов учтены ...

Как нарисовать прямоугольник в System.Windows.Forms?
Вот код, который сделан неумелым пользователем на System.Windows.Forms и System.Drawing: {$reference System.Drawing.dll} {$reference...

System.Windows.Forms+GraphABC в одном окне
Здравствуйте, есть графическая программа написанная в обычном pascal abc с использованием модуля graphabc. очень нужно graphabc встроить в...

Как сделать System.Windows.Forms.Panel прозрачной
Баловался с редактором форм, и получилось так, что Panel была на форме прозрачной, т.е. Была дыра в форме, и через неё можно было смотреть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru