Delphi if...repeat Problem

computerfreaky

Lt. Commander
Registriert
Juni 2008
Beiträge
1.589
Hallo
ALso ich möchte ein Rechner schreiben, dass nach dem Resultat fragt, ob man wieder von vorne anfangen soll, oder das Prog schliessen soll:
Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

VAR NBR1, NBR2, SUMME:INTEGER;
VAR ANTWORT:STRING;
begin

  write('Erste Ziffer:');
  readln(NBR1);
  write('Zweite Ziffer:');
  readln(NBR2);
  SUMME:=NBR1+NBR2;
  write('Summe ist:',SUMME);
  readln;
  write('Weiter?');
  readln(ANTWORT);
 if (ANTWORT) = 'Yes' then repeat begin until end;



  { TODO -oUser -cConsole Main : placez le code ici }
end.
Ja also beim Compilieren sagt er mir: END gewartet aber UNTIL gefunden.
Kann mir da jmd helfen bitte?
 
Also erstmal: http://de.wikibooks.org/wiki/Programmierkurs:_Delphi:_Pascal:_Schleifen#Die_repeat-until-Schleife

Und wenn ich mich noch richtig an meine Schulzeit erinnern kann, da hatte ich auch Delphi, müsste es so gehen:
Code:
repeat
  ....
  readln(ANTWORT)
until (ANTWORT = "No")

Nagel mich jetzt bitte nicht auf den genauen Syntax fest aber dein "if" hat da nichts zu suchen (siehe Link). Die Schleife bricht ab sobald ein Ereignis eintritt, also anders als bei JAVA wo die Do-While Schleife erst abbricht sobald ein Ereignis nicht mehr gegeben/richtig ist.

mfg
 
Zuletzt bearbeitet:
Hallo
Also hab jetzt mal nen neues Proggi geschreiben, was zuerst fragt was man rechnen will(Multi, Subtra,Divi, Summe) und danach fragt ob man weiter fahren möchte oder nicht
Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

VAR NBR1, NBR2, SUMME, MULTI, SUBTRA:INTEGER;
VAR NBR3, NBR4, DIVI:REAL;
VAR ENTSCHEIDUNG, WEITER:STRING;

begin
 repeat
  write('Was willste rechnen?');
  readln(ENTSCHEIDUNG);

 if ENTSCHEIDUNG = 'Summe' then
begin
  write('Erste ziffer');
  readln(NBR1);
  write('Zweite Ziffer');
  readln(NBR2);
  SUMME:=NBR1+NBR2;
  write('Die Summe ist',SUMME);
  readln;
end

 else if ENTSCHEIDUNG = 'Multi' then
begin
  write('Erste Ziffer');
  readln(NBR1);
  write('Zweite Ziffer');
  readln(NBR2);
  MULTI:=NBR1*NBR2;
  write('Multi ist:',MULTI);
  readln;
end
  else if ENTSCHEIDUNG = 'Subtra' then
begin
  write('Erste Ziffer');
  readln(NBR1);
  write('Zweite Ziffer');
  readln(NBR2);
  SUBTRA:=NBR1-NBR2;
  write('Subtra ist',SUBTRA);
  readln;
end

 else if ENTSCHEIDUNG = 'Divi' then
begin
  write('Erste Ziffer');
  readln(NBR3);
  write('Zweite Ziffer');
  readln(NBR4);
  DIVI:=NBR3/NBR4;
  write('Divi ist:',Format('%4.2f', [DIVI]));
  readln;
end;
begin
  write('Weiter machen?');
  readln(WEITER);
end;
 until (WEITER = 'No');
                                                  { TODO -oUser -cConsole Main : placez le code ici }
end.
So die Sache ist die, der Programm funktioniert einwandfrei, nur beim Kompilieren im Delphi dauert es schon gute 10sekunden und nimmt mir eine CPU Lastung von 50Prozent.
Die entstandene .exe startet ganz normal und dauert nicht so lange wie beim Kompilieren...
SO ist das normal dass er beim Kompilieren so lange braucht? Bei meinen anderen kleinen Programme braucht der nicht solange zum Kompilieren...
 
Was ist denn der Output des Compilers?

Zudem: Warum keinen switch mit case-Zweigen, das würde doch auch der Übersichtlichkeit zugute kommen...

Gruß,

badday
 
Zurück
Oben