AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?
Thema durchsuchen
Ansicht
Themen-Optionen

andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

Ein Thema von Coxy · begonnen am 4. Mai 2011 · letzter Beitrag vom 5. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Coxy

Registriert seit: 27. Mär 2011
28 Beiträge
 
#1

andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 4. Mai 2011, 20:03
Delphi-Version: 5
Hallo,
ich habe einen letzten Fehler:
Der script soll das Programm anhalten eine Nachricht anzeigen und nach ein paar Sekunden schließen.
Leider kommt die Nachricht, das Programm wird nicht angehalten und stürzt ab und wird nicht richtig geschlossen.
Aber wieso? Der Script ist ist doch so banal das er eigentlich stimmen müsste:

Delphi-Quellcode:
if Punkte > 100 then begin
  sleep(10000);
  showmessage('Sie haben gewonnen');
  application.Terminate;
  end
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 4. Mai 2011, 20:13
Hallo,

schreiben Delphianer Skripte? Wir schreiben eher Source Code. Des Weiteren müsste das Sleep erst nach dem ShowMessage platziert werden. Allerdings ist Sleep und ShowMessage blockierend. I.S.v. Sleep heißt das, dass die nächste Zeile erst dann fortgesetzt wird, wenn die entsprechende Zeit abgelaufen ist. In deinem Fall würde das bedeuten, dass ShowMessage erst nach einer Sekunde aufgerufen wird -> das willst du ja nicht. Bei ShowMessage wird die nächste Zeile (also das Application.Terminate) erst dann aufgerufen, wenn die Meldung quittiert wurde, d.h. wenn der User den OK-Button oder das X gedrückt hat. Daher ist beides schlecht...

Du könntest einen Timer nutzen, der dann entsprechend den Dialog schließt. Oder du nutzt einen Dialog, der sich selbst nach x Sekunden schließt.

Have a look...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Coxy

Registriert seit: 27. Mär 2011
28 Beiträge
 
#3

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 4. Mai 2011, 20:39
ehrlich gesagt schaffe ich es nicht den Beispiel Code in deinem Link zu verstehen.
Hättest du vielleicht ein anderes Beispiel?
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#4

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 4. Mai 2011, 20:53
Was genau verstehst du daran nicht?

Wir hatten hier vor 2-3 Tagen schonmal einen Timer Thread indem alles 100 mal erklärt wurde, vielleicht benutzt du einfach mal die Suche
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 4. Mai 2011, 21:28
Konzeptionell ist es eh schlecht.
Wenn ich gewonnen habe kann es ja sein, das ich noch mal spielen will.
Warum also gewaltsam das Programm beenden.
Lass es den User entscheiden ob er noch mal spielen will oder ob er das Programm beenden will.

Application.Terminate ist eh keine gute Lösung close reicht da vollkommen aus.

Gruss alfold
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#6

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 4. Mai 2011, 22:02
Ja ich halte das auch nicht für sinnvoll aber wer weiss schon worum es genau geht.

Also zurück zur Frage, hier ein Lösungsansatz:

Delphi-Quellcode:
if Punkte > 100 then begin
  Timer1.Interval:=10000;
  Timer1.enabled:=True;
  showmessage('Sie haben gewonnen');
  end
Im OnTimer Ereignis von Timer1 könnte dann Form1.Close; stehen ...
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 5. Mai 2011, 08:00
Hallo,

Ist nicht ein Ansatz so, dass es in der OnTimer-Methode nicht sofort die Form.close ausführt.
Das hieße doch, dass er bei 1. Sekunde das Form schliesst.

Mein Vorschlag in der TForm1.CanClose-Methode:

Delphi-Quellcode:

if Punkte > 100 then
begin
    showmessage('Sie haben gewonnen!');
    CanClose := true;
end;
Man musste nur an der entsprechende Stelle die Form1.CanClose-Methode aufrufen.

Mfg Coffeecoder
Coffeecoder

Geändert von Coffeecoder ( 5. Mai 2011 um 08:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#8

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 5. Mai 2011, 08:08
Und wenn man keine 100 Punkte erreicht hat, kann man das Programm nicht schließen?

[edit] Anderer Vorschlag:
Delphi-Quellcode:
if (Punkte > 100) and (Application.MessageBox('Sie haben gewonnen. Ein neues Spiel starten?', 'Glückwunsch', MB_YESNO) = idNo) then
  Close;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 5. Mai 2011 um 08:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 5. Mai 2011, 08:12
Das ist in meinem Code der Fall.

Hinzufügen, musste man noch eine Abfrage zb mit einem MessageDlg wenn man früher das Programm beenden mag.
Coffeecoder
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#10

AW: andwendung stoppen, nachricht anzeigen und danach erfolgreich schließen?

  Alt 5. Mai 2011, 08:15
Siehe mein Edit (dort ist es allerdings andersherum)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz