Programm a la DOS-Prog starten



  • Hallo.

    Gibt es eine Moeglichkeit, ein Programm zu starten und es gleich loslaufen zu lassen mit einer while-schleife??

    Es gibt ja die FormCreate-Funktion, wo quasi alles geladen wird. Hier muss man aber vorsichtig sein.

    Was ich schon probiert habe:

    Im CreateProcess eine Funktion starten - Zeigt die Form nicht an, da er nicht aus dem CreateProcess rauskommt.

    ShowOnActive - hier kommt er bestimmt aus dem CreateProcess, aber zeigt trotzdem nicht die Form an, weil er in der whileschleife heangt.

    Danke fuer eure Ratschlaege.



  • Hallo

    wenn du kompletten Einfluß auf das Startverhalten haben willst, must du in der Hauptdatei arbeiten. Diese heißt <Projektname>.cpp und beinhaltet die WinMain. Dort kannst du den von der IDE generierten Code anpassen. Aber du solltest wissen, was du tust.

    FormCreate und ...Dnestroy sollten nicht benutzt werdten, stattdessen Konstruktor und Destruktor.

    bis bald
    akari



  • Und mit TForm1->Refesh() sollte er dann alles aktualisieren, oder? Ich zweifele immernoch an dieser Funktion 🙂

    Oder geht das auch nicht, wenn man in der whileschleife drin ist.

    TForm1::macheirgendwas()
    {

    while(1)
    {
    i++;
    TForm1->Refresh();
    }
    }

    Gruss



  • Hallo,

    wenn du Source Code schreibst, dann verwende doch das nächste mal bitte auch die syntax dafür - [ cpp ] .... [ / cpp] - in den eckigen klammern ohne Leerzeichen.

    Was machst du mit

    while(1)
    

    ?

    das kann so ja nicht gehen.

    und das i, das du hochzählst, hast du das global deklariert?

    denke, das sollte etwa so aussehen:

    int i = 0;
    while(i <= 1)
    {
    Form1->Refresh();
    i++;
    }
    

    Gruß
    MWJK



  • Voellig egal was in der While drinsteht (in meinem Beispiel war es eine Eins(1))

    Der Code soll beim starten ausgefuehrt werden, unendlich oft. <-- Ohne das ich einen Button druecke.

    Das Problem ist dann der Create von der Form, hier muss ich mich noch mit der WinMain etc auseinandersetzen.

    Gruss Krugman

    PS: Sorry mit dem cpp /cpp 😞

    Edit: Hier nochmal meine Frage zum Befehl "Refresh": Kann es sein, dass dieser nicht funktioniert bei obigem Problem??



  • Hallo,

    also die while soll die ganze zeit wenn das programm läuft ausgeführt werden und du willst das Programm gleichzeitig noch bedienen?

    Gruß
    MWJK

    PS: Das mit dem cpp /cpp is ja nicht so schlimm, sollte auch keine Kritik sondern ein Tipp für dich sein.



  • Ja, so moechte ich es gerne.

    Das mit dem Bedienen hab ich in einem anderen Bereich schon geloest. Funktioniert wunderbar.

    Nur noch das starten und sofort loslaufen (while mit Abbruchbedingung) geht noch nicht.

    Es ist normalerweise so, dass man erst einen Knopf drueckt und dann das Programm erst loslaeuft. Ich moechte diese Programm extern starten und ohne Usereingabe loslaufen lassen. Dies ist wichtig, denn ich moechte das diese Programm Daten verarbeitet ohne das ich dort erst wieder einen Knopf druecken muss.

    Gruss Krugman



  • Pack doch einfach die while-schleife in den OnShow-Event, sobald die Form sichtbar wird wird der ausgelöst.

    In die While-Schleifen gehört aber noch mindestens folgende Zeile die auch regelmäßig ausgeführt wird:

    Application->ProcessMessages();
    

    Was bewirkt die Zeile?
    Wärend einer While-Schleife macht das Programm auch nur das was in der Schleife steht, aber wenn diese Zeile ausgeführt wird arbeitet das Programm ab was noch in der Warteschleife steht, z.b. Tastendrücke oder Mausklicks auf Steuerlemente.



  • Bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema. Danke!


Anmelden zum Antworten