Autor Beitrag
Allack
Hält's aus hier
Beiträge: 7

Win XP
Pascal, Perl
BeitragVerfasst: 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:

ausblenden 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 user profile iconChristian 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
ende := ''// Initialisierung
while ende <> 'exit' do // solange die Variable 'ende' nicht 'exit' als Inhalt hat, mache das was jetzt kommt.
begin
  // Dein eigentlicher Programmteil
  readln(ende);
end;
*jonas
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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 Suche in der Entwickler-Ecke SHELLEXCUTE(); angucken.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Allack Threadstarter
Hält's aus hier
Beiträge: 7

Win XP
Pascal, Perl
BeitragVerfasst: 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

ausblenden Delphi-Quelltext
1:
program.rechnung.restart;					


oder ähnlich. So wie man es zB in JavaScript einsetzt, um ein Script zu wiederholen:

ausblenden Delphi-Quelltext
1:
if (ende != "exit") {rechnung()};					

_________________
Trotz intensivster Erkundungen der Welt ist immer noch nicht alles klar...
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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



BeitragVerfasst: Fr 14.10.05 19:43 
Entweder ein ReadLn vor dem letzten End. oder starte das Programm mal aus der Konsole. ;)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 14.10.05 19:46 
Oder man baut eine eigene Procedure, die man dort aufruft, wo ich oben:
ausblenden Delphi-Quelltext
1:
// Dein eigentlicher Programmteil					

geschrieben habe.
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Fr 14.10.05 19:50 
user profile iconLuckie 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:

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Allack Threadstarter
Hält's aus hier
Beiträge: 7

Win XP
Pascal, Perl
BeitragVerfasst: 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



BeitragVerfasst: Sa 15.10.05 16:39 
user profile iconGTA-Place hat folgendes geschrieben:
user profile iconLuckie 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 15.10.05 18:16 
Achso. Ich dachte das sei irgendwie auf meinen Post bezogen so ironisch oder so... :wink:

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Allack Threadstarter
Hält's aus hier
Beiträge: 7

Win XP
Pascal, Perl
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 16.10.05 15:20 
Wie schon gesagt, du brauchst eine Schleife:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
repeat
  // dein ganzes Programm hier rein

  ende := 'weitermachen';
  readln(ende);    
until (ende = 'exit');
exit;

_________________
We are, we were and will not be.
Allack Threadstarter
Hält's aus hier
Beiträge: 7

Win XP
Pascal, Perl
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
if (eingabe == "prog2"){prog2()};					

_________________
Trotz intensivster Erkundungen der Welt ist immer noch nicht alles klar...
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 16.10.05 15:32 
Neue Frage, neuer Thread. Daher:

*closed*

_________________
We are, we were and will not be.
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.