| 
| 
 | Вопрос # 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] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |