logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Delphi] Jak zaplanować funkcję na określoną godzinę z ComboBox?

matmic 25 Maj 2006 17:22 1932 3
REKLAMA
  • #1 2662500
    matmic
    Poziom 14  
    Posty: 167
    Pomógł: 4
    Ocena: 12
    Witam.
    Chciałbym zrobić prosty harmonogram, tzn. aby dana funkcja była wykonywana o określonej godzinie.
    Do wyboru dokładnej godziny służyć ma ComboBox,
    przyciskiem (Button) wywoływana będzie funkcja.
    Dokładniej mówiąc po kliknięciu na przycisk ma być wykonane funkcja o godzinie wybranej z ComboBox.
    Jak wyglądał by przykładowy kod dla poniżej funkcji:
    
    procedure TForm1.btnCtrlClick(Sender: TObject);
    begin
      with ComPort1.FlowControl do
        if ControlDTR=dtrEnable then
        begin
          ControlDTR:=dtrDisable;
          Poup.Caption:='Zaświeć';
          btnCtrl.Caption:='Zaświeć';
        end
        else
        begin
          ControlDTR:=dtrEnable;
          Poup.Caption:='Zgaś';
          btnCtrl.Caption:='Zgaś';
        end;
    end;
  • REKLAMA
  • #2 2662653
    Minner
    Poziom 19  
    Posty: 289
    Pomógł: 20
    Ocena: 3
    Nie widzę tu pytania, więc powiem tylko, że musisz zapisać w jakimś pliku text najlepiej DateToStr który pamiętał by o której ma być wywołana dana procedura. Później już tylko sprawdzasz czy aktualna data i godzina odpowiada (czy jest równa lub trochę większa-zalaży co ile chcesz sprawdzać) zapisanej w pliku, jeżeli tak to włącza sie procedura i tyle.
  • REKLAMA
  • #3 2662668
    matmic
    Poziom 14  
    Posty: 167
    Pomógł: 4
    Ocena: 12
    Pytanie: jak napisać taką procedure wykonującą, sprawdzającą plik text.
    Nie znam na tyle Delphi aby samemu takie cosik napisać.
    Dlatego proszę o pomoc.
  • #4 2663230
    Jaro15l_90r
    Poziom 13  
    Posty: 84
    Pomógł: 4
    Witam.
    Chyba prościej byłoby zrobić coś takiego w oparciu o pliki INI. Podam ci przykład:

    Zrób nową formę, wrzuć na nią TIMER z dokładnością co do sekundy i w sekcji uses dodaj wpis: INIFiles. Dodaj zmienną globalną do projektu: INI: TIniFile;
    Dodaj zdarzenie OnFormCreate i w tej procedurze zostanie załadowany plik INI. Stwórz procedurę OnClose, w której zmienna INI zostanie zwolniona i w zdarzeniu TIMERa wrzucimy sprawdzanie czy zdarzenie o podanej godzinie istnieje. Przykładowy projekt:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, INIFiles, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      INI: TIniFile; // Deklaracja zmiennej INI
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      INI := TIniFile.Create(extractfilepath(application.ExeName)+'zadania.ini'); // Załadowanie pliku zadania.ini z głównego katalogu programu
    end;
    
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      INI.Free; // Zwolnienie zmiennej INI
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      If Ini.SectionExists(Timetostr(now)) then // Jeżeli sekcja w ini istnieje (aktualny czas)
      begin
        Showmessage(INI.ReadString(Timetostr(now), 'komunikat', '')); // Wyświetlenie komunikatu z pliku INI o podanej godzinie
      end;
    end;
    
    end.

    Przykładowy wygląd pliku zadania.ini (wgraj go do głównego katalogu twojego programu):
    [20:50:00]
    komunikat=Komunikat, który wyświetli się o 20:50
    [20:50:05]
    komunikat=Pięć sekund minęło od poprzedniego komunikatu ;-)

    To jest tylko przykład i działa jedynie o podanej godzinie każdego dnia, odpowiednio modyfikując będziesz miał przystosowany do twoich potrzeb.
REKLAMA