|
Вопрос # 6 516/ вопрос решён / |
|
Уважаемые эксперты! Дайте нескольких примеров динамической установки компонента не входящего в палитру (в идеале THeartMachine) без добавление в палитру компонентов. Пожалуйста комментируйте на уровне статей Ерёмина. Статья будет еще лучше!!!
Стива Тейксейра и Ксавье Пачеко не понимаю.
Ответа могу подождать до чемпионата мира по футболу...
За этот вопрос уже получал "отлуп" от самого Доктора наук min@y™
28 сентября 2013 . Я пока умнее не стал.
Примечание #1 (8 марта 2014, 19:15): THeartMachine отменяется. Жду других примеров от экспертов "посетителей" до не выше 9 класса.
 |
Вопрос задал: zvygin1964 (статус: Посетитель)
Вопрос отправлен: 24 февраля 2014, 17:14
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 26; последнее сообщение — 11 марта 2014, 17:03; участников в обсуждении: 2.
Страницы: [1] [2] [Следующая »]
|
min@y™ (статус: Доктор наук), 24 февраля 2014, 17:28 [#1]:
Цитата (zvygin1964):
Дайте нескольких примеров динамической установки компонента не входящего в палитру (в идеале THeartMachine) без добавление в палитру компонентов.
Ты хочешь установить компонент, не устанавливая компонент? Или я чойто не понимаю?
Цитата (zvygin1964):
Стива Тейксейра и Ксавье Пачеко не понимаю.
Найди книжку на русском языке, тогда поймёшь.
Цитата (zvygin1964):
За этот вопрос уже получал "отлуп" от самого Доктора наук min@y™ 28 сентября 2013 .
Где? Какой № вопроса?
Цитата (zvygin1964):
Я пока умнее не стал.
Какая жаль! Почему?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 24 февраля 2014, 17:50 [#2]:
Эту книжку на русском языке подарили мне вы. Вопрос # 6 478. Да ничего и с таким "чердаком" живу нормально.
|
|
min@y™ (статус: Доктор наук), 24 февраля 2014, 18:24 [#3]:
На самый главный мой вопрос ты опять ответил игнором. Ну почему?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 24 февраля 2014, 19:56 [#4]:
Ну написал я тебе пример. Так сойдёт?

Скачать и посмотреть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 3 марта 2014, 21:13 [#5]:
Да. Использовать не устанавливая в палитру.
Как например использовать ваш исходник:
{
HRT := THRTimer.Create;
HRT.StartTimer; Сброс таймера в ноль
HRT.ReadTimer; Возвращает отсчитанное время в миллисекундах
начиная со времени старта
}
unit HRTimer;
interface
uses Windows;
type
// --------------------- Класс - высокоточный таймер -------------------------
THRTimer = class(TObject)
constructor Create;
function StartTimer: Boolean; // Обнуление таймера
function ReadTimer: Double; // Чтение значения таймера в миллисекундах
private
StartTime: Double;
ClockRate: Double;
public
Exists: Boolean; // Флаг успешного создания таймера
end;
var
Timer: THRTimer; // Глобальая переменная. Создаётся при запуске программы
{ Фукнция высокоточной задержки.
Delphi:
Синтаксис: function HRDelay(const Milliseconds: Double): Double;
Milliseconds: Double - задержка в миллисекундах (может быть дробной)
Результат функции - фактически произошедшая задержка с погрешностью.
Пример вызова функции: X:= HRDelay(100.0); или HRDelay(100.0);
C++Builder:
Синтаксис: double HRDelay(const double Milliseconds);
Double Milliseconds - задержка в миллисекундах (может быть дробной)
Результат функции - фактически произошедшая задержка с погрешностью.
Пример вызова функции: double X = HRDelay(100.0); или HRDelay(100.0);}
function HRDelay(const Milliseconds: Double): Double;
implementation
function HRDelay(const Milliseconds: Double): Double;
begin
Timer.StartTimer();
repeat
Result:= Timer.ReadTimer();
until Result >= Milliseconds;
end;
{ THRTimer }
constructor THRTimer.Create;
var
QW: LARGE_INTEGER;
begin
inherited Create;
Exists := QueryPerformanceFrequency(Int64(QW));
ClockRate := QW.QuadPart;
end;
function THRTimer.StartTimer: Boolean;
var
QW: LARGE_INTEGER;
begin
Result := QueryPerformanceCounter(Int64(QW));
StartTime := QW.QuadPart;
end;
function THRTimer.ReadTimer: Double;
var
ET: LARGE_INTEGER;
begin
QueryPerformanceCounter(Int64(ET));
Result := 1000.0 * (ET.QuadPart - StartTime) / ClockRate;
end;
initialization
Timer:= THRTimer.Create();
finalization
Timer.Free();
end.
|
|
min@y™ (статус: Доктор наук), 3 марта 2014, 21:49 [#6]:
Цитата (zvygin1964):
Да. Использовать не устанавливая в палитру.
Пример смотрел?
Цитата (zvygin1964):
Как например использовать ваш исходник
THRTimer - это не компонент, его на форму не положишь. Но, тем не менее, в самом модуле, который ты тут выложил, в комментариях я написал, как его использовать, ёмаё! К тому же, достаточно этот модуль прописать в uses в своём проекте, и тогда будет доступен один глобальный экземпляр таймера по переменной Timer: THRTimer; он создастся и удалится автоматически при старте и завершении работы приложения соответственно.
З.Ы. Кстати, идея таймера не моя, я просто собрал функции в класс, немного доработал напильником кое-что и сделал отдельный модуль для удобства.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 4 марта 2014, 21:54 [#7]:
Пример не посмотрел - http://zalil.ru/ не доступен.
"Скачать и посмотреть." видел. Я и без этого знал, что вы можете всё (но там вы использовали компонент уже установленный в палитру).
Оказывается меня интересует именно использование модулей.
unit form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, Menus, Buttons, HRTimer;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
Memo2: TMemo;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
TimInc: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TimInc:=0;//присваиваю начальное значение
Timer:= HRDelay(100.0);// Incompatible types: 'THRTimer' and 'Double'
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
TimInc:=TimInc+1; //увеличиваю на постоянное число
Memo1.Lines.Add(IntToStr(TimInc));//вывожу результат
end;
end.
Выдало ошибки:
-Incompatible types: 'THRTimer' and 'Double'
пробовал FloatToStr не помогает, наверное нужно преобразовать types: 'THRTimer' в 'String' ?
-[Fatal Error] Timer.dpr(5): Could not compile used unit '..\..\25.12.13\test\form.pas' ,
а ведь в папку с проектом я положил HRTimer.pas
значит файл HRTimer.pas делал неправильно.
Где посмотреть создание файла *.pas (сформулируйте гугл запрос).
Пожалуйста!
|
|
min@y™ (статус: Доктор наук), 4 марта 2014, 22:25 [#8]:
Цитата (zvygin1964):
Я и без этого знал, что вы можете всё
Это неправда!
Цитата (zvygin1964):
но там вы использовали компонент уже установленный в палитру
Это тоже неправда. Мои действия полностью соответствовали условию задачи:
Цитата (zvygin1964):
без добавление в палитру компонентов
То есть, я:
- создал новый проект с формой;
- взял модуль с компонентом и скопировал его в папку с проектом;
- переименовал модуль в uScopeMeter.pas;
- добавил этот модуль в раздел uses модуля главной формы;
- переименовал в модуле uScopeMeter.pas класс THeartMachine в TScopeMeter;
- положил на форму кнопку, в обработчике события OnClick которой сделал динамическое (во время выполнения приложения) создание компонента TScopeMeter на форме, а точнее - на панели (для красоты).
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 4 марта 2014, 22:29 [#9]:
Цитата (zvygin1964):
Пример не посмотрел - http://zalil.ru/ не доступен.
Надо заходить сюда почаще, ибо файлы в zalil.ru имеют срок хранения.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 4 марта 2014, 22:47 [#10]:
Цитата (zvygin1964):
Выдало ошибки: -Incompatible types: 'THRTimer' and 'Double'
Совершенно правильно компайлер ругнулся. Скажи, что ты хотел сделать этим присваиванием?
Timer:= HRDelay(100.0); // что за бред???!!!111
Цитата (zvygin1964):
а ведь в папку с проектом я положил HRTimer.pas
Молодец. Хотя это и не обязательно, ибо можно заставить компайлер подцеплять нужные модули из любой папки.
Цитата (zvygin1964):
значит файл HRTimer.pas делал неправильно.
Это абсолютно НЕ значит, что модуль сделан неправильно. Это значит, что ты его неправильно используешь, а также это значит, что ты вообще не понимаешь, что делаешь.
Цитата (zvygin1964):
Где посмотреть создание файла *.pas (сформулируйте гугл запрос). Пожалуйста!
Ну, в delphi 7, например, это делается вот так:

Вот тебе гугл-запрос.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 8 марта 2014, 13:15 [#11]:
"Timer:= HRDelay(100.0); // что за бред?",- я так хотел запустить таймер.
"Гугл-запрос" звучит как:"delphi модуль структура" (переписал его сюда, пока он не сломался).
Ваш урок о подключении модуля получился замечательным! Такого в Гугле даже близко ничего нет.
Все получилось:
-в бесконечном цикле из ваших таймер-задержек наблюдаю их окончание;
-вижу их действительную продолжительность с какой-то погрешностью (относительно свойств материнской платы)!!! Это здорово. Это можно потрогать и использовать.
unit form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, Menus, Buttons,HRTimer;
type
TForm1 = class(TForm)
Memo1: TMemo; {счетчик произошедших задержек HRDelay( )}
Button1: TButton; //запускает бесконечный цикл задержек уважаемого min@y™
Button2: TButton; //останавливает бесконечный цикл, нажать перед выходом из программы!!!
Memo3: TMemo; //фактически произошедшая задержка с погрешностью
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
TimInc: Integer;
TimerMinayTM:String ;
TimMinay:Double;
Timer: THRTimer;
Stop: Boolean = False;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TimInc:=1;//присваиваю начальное значение
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button2.Enabled:=True;
Button1.Enabled:=False;
Stop:=False;
while not(Stop) do
begin
TimMinay:= HRDelay(1000.0);
TimerMinayTM:=FloatToStr(TimMinay);// а это уже можно увидеть
TimInc:=TimInc+1; //увеличиваю на постоянное число
Memo3.Lines.Add(IntToStr(TimInc));
Memo1.Lines.Add(TimerMinayTM); //вывод полученной задержки
Application.ProcessMessages
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Stop:=True;
Button2.Enabled:=False;
Button1.Enabled:=True;
end;
end.
|
|
min@y™ (статус: Доктор наук), 8 марта 2014, 13:30 [#12]:
var
Form1: TForm1;
TimInc: Integer;
TimerMinayTM:String ;
TimMinay:Double;
Timer: THRTimer; // это лишнее, убери.
Stop: Boolean = False;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 8 марта 2014, 19:21 [#13]:
Цитата (zvygin1964):
Жду других примеров от экспертов "посетителей" до не выше 9 класса.
А я-то чем не угодил?
unit Main;
interface
uses
Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, uScopeMeter,
StdCtrls, ExtCtrls, ComCtrls;
type
TMainForm = class(TForm)
TestPanel: TPanel;
CreateButton: TButton;
Timer: TTimer;
CountTrackBar: TTrackBar;
CountLabel: TLabel;
procedure CreateButtonClick(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure CountTrackBarChange(Sender: TObject);
private
{ Private declarations }
public
FMeter: TScopeMeter; // переименованный THeartMachine (модуль uScopeMeter.pas)
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
{$R WindowsXP.res}
procedure TMainForm.CreateButtonClick(Sender: TObject);
begin
// создание по кнопке сделал для наглядности процесса.
// создаю компонент
FMeter:= TScopeMeter.Create(Self);
// устанавливаю некоторые свойства компонента
FMeter.Parent:= TestPanel;
FMeter.Align:= alClient;
FMeter.ColorGrid:= clNavy;
FMeter.HGridCount:= 11;
FMeter.HTickCount:= 40;
FMeter.ShowHint:= True;
// запускаю рисование графика
CreateButton.Enabled:= False;
Timer.Enabled:= True;
end;
procedure TMainForm.TimerTimer(Sender: TObject);
var
Index: Integer;
begin
if not Assigned(FMeter)
then Exit;
for Index:= 0 to CountTrackBar.Position - 1 do
FMeter.AddPoint(Index, Random(FMeter.Max) + 1, Format('График %d', [Index + 1]));
end;
procedure TMainForm.CountTrackBarChange(Sender: TObject);
begin
CountLabel.Caption:= 'Графиков: ' + IntToStr(CountTrackBar.Position);
end;
end.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 8 марта 2014, 23:57 [#14]:

Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 9 марта 2014, 22:18 [#15]:
Да всем угодили. Но для меня этот пример очень сложный.
Может какие школьники подбросят пример по проще?
Пока ищу как сделать в нем эти ...(наследники что-ли):
TestPanel: TPanel;
CreateButton: TButton;
Timer: TTimer;
CountTrackBar: TTrackBar;
CountLabel: TLabel; //.
А вчера, 22:57 [#14] это чего за штуковина?
|
|
min@y™ (статус: Доктор наук), 9 марта 2014, 23:50 [#16]:
Цитата (zvygin1964):
Да всем угодили. Но для меня этот пример очень сложный. Может какие школьники подбросят пример по проще?
У меня плохие новости: этот пример САМЫЙ простой, проще некуда.
Цитата (zvygin1964):
Пока ищу как сделать в нем эти ...(наследники что-ли):
Какие нахрен наследники?! Это имена полей-переменных - компонентов, лежащих на форме, т.е. просто идентификаторы, которые могут быть, в принципе, любыми! Это я их так обозвал. Компилятору пофигу.

Цитата (zvygin1964):
А вчера, 22:57 [#14] это чего за штуковина?
А это QR-code. Расшифруй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 9 марта 2014, 23:54 [#17]:
Блин, прям схема получилась. 
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
zvygin1964 (статус: Посетитель), 10 марта 2014, 10:56 [#18]:
QR-code расшифровал. Но я не могу быстрее. Старый, ленивый, работаю по сменам (сплю-ем)...
А схема, типа метро в одном из городов, слишком мелкая, подробностей прочитать не могу.
|
|
zvygin1964 (статус: Посетитель), 10 марта 2014, 12:16 [#19]:
Ура! Получилось с седьмого раза. Копилка для пива осталась с тем же номером (в ней есть цифры ...1299)?
|
|
min@y™ (статус: Доктор наук), 10 марта 2014, 12:54 [#20]:
Цитата (zvygin1964):
Ура! Получилось с седьмого раза.
Чо получилось-то?
Цитата (zvygin1964):
Копилка для пива осталась с тем же номером (в ней есть цифры ...1299)?
Не, туда не надо. Щас у меня другие реквизиты. А что, хочешь угостить пивком? Не откажусь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|