Wo ist das Hauptprogramm?



  • Hallo.

    Ich hab mir so eine VCl-Anwendung erstellt und 1 Knopf raufgezogen. dann die Knopf-klick-Funktion mit einer Ausgabe gefüllt. jetzt macht die Anwendung was wenn ich auf den Knopf drücke. kann die anwendung auch was machen ohne das ich auf den knopf drück? wie? 😕



  • Ja, im Konstruktor.



  • __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    

    Das hier stimmts?

    Ist das dann wie so eine main() funktion?

    kann ich da eine schleife reinschreiben und die läuft immer und wird dann von Knopf-Klick unterbrochen oder wie?



  • Hallo

    Karambaz schrieb:

    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    

    Das hier stimmts?

    Ja das ist der Konstruktor.

    Ist das dann wie so eine main() funktion?

    Nein in jedem Projekt gibt es extra noch eine main-Funktion. Ein Form-Konstruktor ist schon etwas anderes.

    kann ich da eine schleife reinschreiben und die läuft immer und wird dann von Knopf-Klick unterbrochen oder wie?

    Nein das kannst du mit dem Konstruktor so nicht machen. Für nebenläufige Programmierung brauchst du TTimer oder TThread.
    Ich empfehle dir erstmal die Grundlagen von C++ zu lernen, insbesondere OOP.

    bis bald
    akari



  • Mahlzeit.

    Ich habe es zwar noch nicht gebraucht, aber wer weiß... Irgendwann ist immer das 1. Mal 😉
    Daher interessiert mich jetzt auch, wo der Teil einer VCL-Anwendung liegt, der automatisch abgearbeitet wird und wo ich Anweisungen einfügen kann!
    Ich hoffe ich oute mich jetzt nicht als Extrem-Noob und kann meinen Status als Noob behalten... 😃



  • Das "Hauptprogramm" bei einem Windows-Programm ist idR die Nachrichtenschleife - und dort würde ich nicht direkt eingreifen wollen. Die Nachrichtenschleife empfängt ständig Nachrichten vom System (ala "dieser Button wurde gedrückt", "ich will jetzt dein Fenster neu zeichnen", "der Anwender hat das Fenster verschoben", etc.) und leitet sie an geeignete Behandlungsfunktionen weiter (z.B. deine "Knopf-Klick-Funktion").

    Wenn du etwas ständig machen willst, solltest du dazu oberhalb oder neben der Nachrichtenschleife ansetzen:

    • Threads - laufen parallel zum Hauptprogramm und können damit unabhängig von der Oberfläche arbeiten
    • Timer - erzeugen in festgelegten Intervallen eine eigene Nachricht, die du genauso behandeln kannst wie die Nachricht, daß dein Button gedrückt wurde
    • OnIdle - die Funktion wird immer dann aufgerufen, wenn das Programm Langeweile hat (auf deutsch: wenn alle gerade anliegenden Nachrichten abgearbeitet sind)


  • Ist ja Alles interessant...

    Ich hab' gleich mal mit der Komponente TApplicationEvents und Ereignis OnIdle rumprobiert... Und da passiert auch was, wenn nix passiert! 😃


Anmelden zum Antworten