TTimer als globale clock
-
Was habt ihr mit dieser while-Schlaufe?
void __fastcall TForm1::Timer1Timer(TObject *Sender) { switch(Timer1->Tag) { case 0: // tu was... break; case 1: // tu was zum zweiten... break; case 2: // tu was zum dritten... break; } Timer1->Tag++; }void TForm1::Button1Click() { Timer1->Intervall = 1000; Timer1->Enabled = true; }
-
1310-Logik schrieb:
die sollen aber nicht vom timer aufgerufen werden, wegen der zugriffsrechte.
Mhh auch wenns ein Designfehler is wünscht er es so...
MfG
Alexander Sulfrian
-
[quote="BigNeal"]Was habt ihr mit dieser while-Schlaufe?
void __fastcall TForm1::Timer1Timer(TObject *Sender) { switch(Timer1->Tag) { case 0: // tu was... break; case 1: // tu was zum zweiten... break; case 2: // tu was zum dritten... break; } Timer1->Tag++; }case 213874312: //tu was zum 213 millionsten mal???wie soll das denn gehn??
habs jetzt so gelöst
void __fastcall TForm1::Timer1Timer(TObject *Sender) { a_manager->cycle(); }die manager class hat nen container aller zu verarbeitenden items, wobei die methoden der items trotzdem noch public sein müssen.

aber das geht wohl nicht anders
mach ich das eigentlich zu kompliziert? denk halt dass das schöne oop ist oder nich'? effizient is es nich..
will die form von der rechnerei trennen. dabei muss ich die *form1 als parameter bei der konstruktion des managers übergeben.
wie macht ihr profis sowas?@Alexander Sulfrian
das mit den windows messages ist noch interessant, wollt am liebsten ne meldung vom timer aufn bus jagen, und die objekte holen sich dann die wieder..
aber das brächt wohl schon mehr aufwand (multithread?)Mhh auch wenns ein Designfehler is wünscht er es so...
wieso wo ist der fehler?? wünsche es gern richtig zu machen

bin da noch nicht so bewandt mit ood/oop oder wie auch immer..na ich danke mal vorerst,
weitere ideen nehm ich gern auf
-
1310-Logik schrieb:
case 213874312: //tu was zum 213 millionsten mal???wie soll das denn gehn??
Der Tag muss natürlich wieder auf 0 gesetzt werden. Hier wohl beim dritten Durchlauf.
Wo ist denn genau dein Problem? Dass du von außen nicht auf private-Methoden zugreifen kannst? Das wäre nämlich ziemlich logisch.
-
HEZ schrieb:
Wo ist denn genau dein Problem? Dass du von außen nicht auf private-Methoden zugreifen kannst? Das wäre nämlich ziemlich logisch.
das ist mir auch klar, dass es nicht geht, aber ich will das eigentlich nicht, wieso weis ich auch nicht..
-
was willst du nicht?
nach dem Prinzip der oop programmieren?du kannst es ja auch so lösen
while(1) { Sleep(1000); // 1 sek pause // Tu irgendwas }
-
1310-Logik schrieb:
void __fastcall TForm1::Timer1Timer(TObject *Sender) { if( Timer1->Enabled ) Timer1->Enabled = false; else if( !Timer1->Enabled ) Timer1->Enabled = True; }// ich würde das so schreiben...
Timer1->Enabled = !Timer1->Enabled;
-
ich würde das so schreiben:
Timer1->Enabled = false;irgendwie macht es für mich keinen Sinn, den OnTimer-Event aufzurufen, wenn Timer->Enabled == false ist
-
jaja inzwischen is mir klar, dass die if abfragerei reichlich müll war, die mach ich ja auch nich mehr.
will oop machen aber wie?
mein problem:ich wollt alle 1000ms einige methoden von objekten verschiedener klassen aufrufen.
diese methoden will ich aber vor anderen zugriffen schützen. darum nicht public
die form1 will ich aber auch nicht als friend haben (die stinkt)ists völlig blöd was ich will?
hab ichs prinzip nicht kapiert oder wie?
-
da du so komische ansprüche hast..
- du fügst ein Objekt von TTimer als Member in deine Klasse ein
- du stellst die nötigen schnittstellen im public bereich für dein Klassen zur verfügung
- du zeigst mit dem Funktions-pointer TTimer::OnTimer auf eine Member-Methode deiner Klasse.
- du erstellst eine Klasse die als friend deklariert ist und den Timer kapselt
-
Sunday schrieb:
// ich würde das so schreiben...
Timer1->Enabled = !Timer1->Enabled;
Warum denn?? Bitte erklär das mal
-
bitte erklärt mir mal wie man das den "richtig" macht, ohne meine komischen ansprüche..
bin echt nicht sicher was richtig ist, da anfänger..
hab nur mal gelesen, sowenig wie möglcich public zu machen wär n dogma