Autor |
Beitrag |
Allack
Hält's aus hier
Beiträge: 7
Win XP
Pascal, Perl
|
Verfasst: Fr 14.10.05 18:26
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.
_________________ Trotz intensivster Erkundungen der Welt ist immer noch nicht alles klar...
Zuletzt bearbeitet von Allack am Fr 14.10.05 19:18, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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
Hält's aus hier
Beiträge: 3
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Allack 
Hält's aus hier
Beiträge: 7
Win XP
Pascal, Perl
|
Verfasst: Fr 14.10.05 19:25
_________________ Trotz intensivster Erkundungen der Welt ist immer noch nicht alles klar...
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: 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.
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Fr 14.10.05 19:37
Genau. 2 Buttons in einer Konsolenanwendung. Er verwendet ReadLn(); falls dir das noch net aufgefallen ist.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 14.10.05 19:43
Entweder ein ReadLn vor dem letzten End. oder starte das Programm mal aus der Konsole. 
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 14.10.05 19:46
Oder man baut eine eigene Procedure, die man dort aufruft, wo ich oben:
Delphi-Quelltext
geschrieben habe.
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: 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?
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Allack 
Hält's aus hier
Beiträge: 7
Win XP
Pascal, Perl
|
Verfasst: 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...
_________________ Trotz intensivster Erkundungen der Welt ist immer noch nicht alles klar...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 15.10.05 16:39
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 15.10.05 18:16
Achso. Ich dachte das sei irgendwie auf meinen Post bezogen so ironisch oder so... 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Allack 
Hält's aus hier
Beiträge: 7
Win XP
Pascal, Perl
|
Verfasst: 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.
_________________ Trotz intensivster Erkundungen der Welt ist immer noch nicht alles klar...
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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; |
_________________ We are, we were and will not be.
|
|
Allack 
Hält's aus hier
Beiträge: 7
Win XP
Pascal, Perl
|
Verfasst: 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"); |
_________________ Trotz intensivster Erkundungen der Welt ist immer noch nicht alles klar...
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 16.10.05 15:32
Neue Frage, neuer Thread. Daher:
*closed*
_________________ We are, we were and will not be.
|
|