Inhalte eines Ordners prüfen
-
azad187 schrieb:
Mit dem Sleep ist schon ne feine Sache nur reagiert mein Programm dann nicht mehr sonder hängt nur im Tray rum bis alles vorbei ist das ein Problem

Deshalb sollst du ja auch Timer verwenden.
-
Was wird denn das für eine Anwendung ?
Kann absolut nicht nachvollziehen wozu sowas gut sein soll.
Willst du allen Kunden nacheinander 500 EMails schicken ?
-
ja gut ehh dann müsste ich erstmal wissen wie das geht.
warum kann man denn net infach sagen
Timer1->OnTimer
{
Hier was er nach den 3 sek alles machen soll und net extra void
}und danach das ganze wieder von vorne

if (Query1->Fields->Fields[9]->AsString == "ISDN") { Timer1->Enabled=true; Timer1->Interval=3000; Timer1->OnTimer; Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_ODDEST.gtw"); Memo1->Lines->Clear(); Timer1->Enabled=false; }funzt aber so leider nicht soll aber so funzen sinngemäß

-
Genau so funktioniert es doch
a) benutze die Komponente
b) was ist dasTimer1->OnTimer;
Im OnTimer Ereignis als erste Zeile
Timer1->Enabled=false;... hier das was erledigt werden soll
als letzte Zeile
Timer1->Enabled=true;Das ist ganz einfach
-
if (Query1->Fields->Fields[9]->AsString == "ISDN") { Timer1->Enabled=true; Timer1->Interval=3000; Timer1->OnTimer; Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_ODDEST.gtw"); Memo1->Lines->Clear(); Timer1->Enabled=false; }Wenn du deinen Timer startest, heisst das nicht, das das Programm dann bis auf das OnTimer Ereignis wartet ....

-
if (Query1->Fields->Fields[9]->AsString == "ISDN") { Timer1->OnTimer = Timer1Timer; }void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Enabled=false; Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw"); Memo1->Lines->Clear(); Timer1->Enabled=true; }so hab ich das nach deiner Aussage müsste er ja jetzt jedsmal 3000msec warten und dann alles eintragen wie vorher macht er aber net.
-
Mein Programm muss aber warten 3 sec nach dem ersten durchlauf
bevor meine 2ter schleifendurchlauf anfängt muss es 3sec warten koste was es wolle nur es darf nicht so sleepen dann ist es ja im tray und überlastet alles
-
Wieso, er macht doch das was du ihm sagst.
OnTimer ausgelöst:
Timer1->Enabled=false;//Timer anhalten Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");//Inhalt von Memo1 speichern Memo1->Lines->Clear();//Memo1 löschen (d.h. wenn du es nicht innerhalb von 3 Sek wieder füllst speichert er ein leeres Memo) Timer1->Enabled=true;//Timer wieder neu starten
-
Ja dann kann ich nunmal nix mit dem Timer anfangen
er soll einfach nur am Ender der Schleife 3Sekunden warten bis er wieder anfängt checkt ihrs net der timer timt zawr blöde rum hält aber meine schleife net davon ab weiter zu machen !!!
-
Will doch nur das einfachste von der welt
WENN 3 SEKUNDEN VERGANGEN MACH WEITER

kann doch net sein das es so eine Funktion in c++ nicht gibt???
Sleep(3000); ist schon fast perfekt nur das das programm nicht mehr reagiert ist voll bekloppt

-
Dann musst du dir vielleicht mal überlegen, ob du deine Schleife überhaupt brauchst ???
Mach das was in deiner Schleife passiert im OnTimer Ereignis ....
-
Du hast doch einen konzeptionellen Fehler!
er soll einfach nur am Ender der Schleife 3Sekunden warten bis er wieder anfängt checkt ihrs net der timer timt zawr blöde rum hält aber meine schleife net davon ab weiter zu machen !!!
Und -sorry- Schreibe ohne Dialekt mit Satzzeichen, dann kann man die Texte auch verstehen
-
war klar das sowas kommen muss..
Ich habe es auch nochmal versucht nach der anderen Methode die ganze Schleife als Timer zu nehmen
ButtonKlick = Ontimer Start
und im Ontimer hatte ich alles drinne nur leider hat er nicht 1x was gemacht
die idee hört sich ja nicht schlecht anam anfang bevor die schleife beginnt setz er den timer zurück und am ende startet er ihn wieder nur leider gings net

also somit kann mir keiner mit dem Problem helfen ?
Es gibt also definitiv keine Funktion âla sleep die nicht rumnervt.
-
Nochmal sorry -> Du hast ein Fehler in deinem Konzept der Programmierung in Zusammenarbeit mit dem Timer.
Der Timer wird alle x Sekunden ausgelöst und würde etwas im OnTimer erledigen. Also musst du das was alle x-Sekunden erledigt werden soll da rein programmieren. Wenn du dein
Memo1->Lines->SaveToFile("C:\\T_ISDN\\"+Query1->Fields->Fields[0]->AsString+"_nerv.gtw");//Inhalt von Memo1 speichernIn den OnTimer schreibst, wird es alle x gespeichert.
-
Wie gesagt ich hatte das schon bemerkt aber ich sage nochmal
ich habe dann alles in den OnTimer reingeschrieben...den per Buttonklick starten lassen
den intervall auf 3sec
vor anfang der schleife im Timer dannfalse
... Schleife....
true
so dachte ich würde er alle x Sek die schleife wiederholen nur nicht passierte

-
Dann wirst du einen allg. unbekannten Spezialtimer haben.
-
kannst du mir mal deine icq nummer geben dann lässt sich das besser klären besprechen ?
-
Was für ein Gespräch... Lege ein Timer-Objekt auf der Form an. Ruf den Eigenschaftsdialog auf und bei den Ereignissen findest du 'OnTimer'. Nun noch ein Doppelklick, und du hast die Timer Funktion, in die du deine Funktion schreiben musst.
Edit: Die 'Schleife' läuft über den Timer, wird also alle x Millisekunden aufgerufen.
Edit2: Ich würde auch mal ganz gerne wissen, wofür das eigentlich gut sein soll? Ich meine die Aufgabenstellung.
-
Ich habe kein "icq"
-
die ganze schleife in den Timer reinzuschreiben ist auch quatsch wie mir gerade auffällt....
da er in den 3sekunden die ganze schleife abarbeitet also alles quatsch bisher Timer kann ich so immoment nicht verweden

denn er soll ja 3sekunden warten bis einen neue Datei erzeugt wird und nicht alle in den 3 sekunden abarbeiten k.a aber timer scheint für mich nicht zu funktionierne werde mich morgen dran setzt habe heute die schnauze voll