Entwickler-Ecke
Sonstiges (Delphi) - (Pascal) Prog nur durhc "exit" beenden
Allack - Fr 14.10.05 18:26
Titel: (Pascal) Prog nur durhc "exit" beenden
Tach auch!!
Bin absoluter Anfänger un hab folgendes Problem:
Wenn ich en Programm geschrieben hab, dass wieder von Anfang anfangen soll, wenn man zum Schluss nicht "exit" eingibt, wie kann ich dass am leichtesten machen? Gibt es einen Befehl in der Art:
Delphi-Quelltext
1: 2:
| readln(ende); if (ende <> exit) then restart; |
Das Hervorgehobene soll nun durch einen Befehl ersetzt werden, der das Programm von ganz vorne anfangen lässt. Ich brauch das, weil wir für die Schule ein Prog erstellen sollen, dass bestimmte Rechnungen macht. Leider wird das Prog immer nach der ausrechnung beendet, ohne das man das Ergebnis sehen kann. hab dann einfach readln an den Schluss gesetzt, dass es erst beim drücken von ENTER beendet wird. Jetzt will ich aber, dass man das Prog durch ENTER neu startet und durch "exit" beendet...
Danke für jegliche Hilfen!!!
Greetz, Allack
Moderiert von
Christian S.: Delphi-Tags hinzugefügt.
jasocul - Fr 14.10.05 18:32
Da du gerade erst anfängst, habt ihr vermutlich nur Bedingungen (if) gehabt. Was du aber brauchst, sind Schleifen (While..do oder repeat..until). Ein Beispiel mit While..do:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| ende := ''; while ende <> 'exit' do begin readln(ende); end; |
*jonas - Fr 14.10.05 18:33
Moin,
also ein Exit ist "fast" immer eine der schlechtesten unelegantesten lösungen.
Erzähl doch mal bitte was das für ein Projekt ist wo du eine
Endlosschleife einsetzt?
Kenne das nur übertragen von Client/Server anwendungen
GTA-Place - Fr 14.10.05 19:22
Also ich hab das so Verstanden, dass man "exit" eingeben muss,
um das Programm zu beenden und nicht, dass er eine Schleife mit
exit; beenden will.
Um das Programm neuzustarten, kannst du dir mal
SHELLEXCUTE(); angucken.
Allack - Fr 14.10.05 19:25
Wir hamm auch schon verschiedene Schleifen behandelt. Hab auch schon mit ner Schleife dieses Problem behoben. Wollte nur wissen, ob es auch einfacher geht... Ob es einen Befehl gibt, der das Programm neu startet. Wenn das Programm "rechnung" heuißt, möglicherweise auch in der Form
Delphi-Quelltext
1:
| program.rechnung.restart; |
oder ähnlich. So wie man es zB in JavaScript einsetzt, um ein Script zu wiederholen:
Amateur - Fr 14.10.05 19:33
also man schließt ein programm über form1.close wenn du in das form1.onclose shellexecute schreibst kannst du deine exe erneut starten. dort überpüfst du zum beispiel ob die checkbox restart angeklickt ist oder nicht. oder ob jemand exit eingegeben hat oder nicht. denn sonst kann man das programm nicht beenden. oder machst zwei buttons neustart und beenden. bei neustart wird exit true gesetzt. sowas kannste alles mit ner if abfrage im onclose überprüfen und dann mit shellexecute erneut starten.
GTA-Place - Fr 14.10.05 19:37
Genau. 2 Buttons in einer Konsolenanwendung. Er verwendet ReadLn(); falls dir das noch net aufgefallen ist.
Delete - Fr 14.10.05 19:43
Entweder ein ReadLn vor dem letzten End. oder starte das Programm mal aus der Konsole. ;)
jasocul - Fr 14.10.05 19:46
Oder man baut eine eigene Procedure, die man dort aufruft, wo ich oben:
geschrieben habe.
Amateur - Fr 14.10.05 19:50
wieso nimmt er kein form? is einfacher, er sieht das ergebnis und alles is gut. er kann es neu starten etc. pp. wir machen in der schule nur forms und gar keine konsolen. dann hätte er das prob net. und wenn es ein prog zur berechnung is wäre es eh einfacher das ganze mit edits aufzuziehn oder?
GTA-Place - Fr 14.10.05 19:50
Luckie hat folgendes geschrieben: |
Entweder ein ReadLn vor dem letzten End. oder starte das Programm mal aus der Konsole. ;) |
Das hab ich jetzt nicht ganz verstanden, aber du kannst
mir ja mal per PN mitteilen, was du damit sagen wolltest :wink:
Allack - Sa 15.10.05 16:03
Ich mach ne Konsolenanwendung weil wir das in der Schule so euf bekommen haben... Wir machen erst seit diesem Schuljahr Programmieren und haben mit Pascal angefangen. Und irgendwann machen wir dann erst Delphi. Unser Lehere meint es is einfacher erst Pascal un dann Delphi zu machen...
Sonst würd ich auch lieber Grafikanwendunggen schreiben, aber momentan müssenw ir halt noch Konsolenprogs machen...
Delete - Sa 15.10.05 16:39
GTA-Place hat folgendes geschrieben: |
Luckie hat folgendes geschrieben: | Entweder ein ReadLn vor dem letzten End. oder starte das Programm mal aus der Konsole. ;) |
Das hab ich jetzt nicht ganz verstanden, aber du kannst
mir ja mal per PN mitteilen, was du damit sagen wolltest :wink: |
Gazz einfach, wenn du ein Konnsolenprogramm aus dem Explorer startest, dann schließt sich die Konmsole sofort wieder nach dem es zu ende ist das Programm. Das ist sein Problem. Entweder er macht als letzte Zeile ein ReadLn, dann wartet das Programm noch auf eine Eingabe und ist somit erst zu ende, wenn die Eingabe erfolgt ist. Oder er macht einfach mal eine Konsole auf und starte das Programm direkt aus der Konsole. Da sich in diesem fall die Konsole nicht schließt, wenn das Programm zu ende ist, sollte er die Ausgabe noch zus ehen bekommen.
War das denn so schwer verständlich ausgedrückt? :roll:
GTA-Place - Sa 15.10.05 18:16
Achso. Ich dachte das sei irgendwie auf meinen Post bezogen so ironisch oder so... :wink:
Allack - So 16.10.05 15:17
Das mit readln am Schluss hab ich ja schon gemacht, steht auch in meiner Fragestellung so drin. Das Problem is, dass ich das Prog nochmal ausführen möchte, ohne es manuell wieder zu starten. Ich möchte, dass es nur beendet wird, wenn man ganz am Schluss "exit" eingibt. Gibt man was anderes oder gar ncihts ein, soll das Prog neu starten.
Gausi - So 16.10.05 15:20
Wie schon gesagt, du brauchst eine Schleife:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| repeat ende := 'weitermachen'; readln(ende); until (ende = 'exit'); exit; |
Allack - So 16.10.05 15:29
Das Problem wäre damit behoben... Danke an alle!!!
Allerdings hab ich noch nicht erfahren, ob es einen Befehl gibt, mit dem man ein Programm aus einem anderen Prog heraus starten kann. Ungefähr so wie man in JavaScript eine andere Funktion aufrufen kann:
Delphi-Quelltext
1:
| if (eingabe == "prog2"); |
Gausi - So 16.10.05 15:32
Neue Frage, neuer Thread. Daher:
*closed*
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!