Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Konsolenanwendung: if [Enter] then Procedure XY - wie um

  Alt 7. Okt 2008, 23:03
Hi,

ich habe mir mal erlaubt, in dem Quelltext einige Zeilen rauszunehmen, die für diese Probelmbetrachtung nicht wichtig sind.

Des Rätsels Lösung heißt eigentlich, das die Prozedur P_Menue immer wieder aufgerufen wird, sobald diese beendet wurde.
Den Abbruch des Programms erwirkst du ja mit halt und dann ist alles vorbei.

Test it

Delphi-Quellcode:
program Stundenplan;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var Tag: ARRAY[1..5,1..8] OF String;
    index:integer;
    A,B,E,V_Menue,j,n,V_Lizenz:Char;
    Anzleer,Anz:Byte;
    Text:String;
    s:String;

//001------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Stunden_einlesen;
var
  index:integer;
begin
  writeln(' ');
  // hier sind ein paar Zeilen ausgelassen worden weil nicht wichtig ;-)
  writeln(' ');
  writeln(' Bitte gebe hoechtens 10 Zeichen ein! ');
  writeln(' Nach jeder Eingabe ENTER druecken! ');
  writeln(' ');
  // hier sind ein paar Zeilen ausgelassen worden weil nicht wichtig ;-)
  writeln(' ');

  for index:= 1 to 8 do
  begin
    writeln(' --- Faecher fuer Montag --- ');
    writeln(' ',index,' Stunde eingeben: ');
    readln( Tag[ 1, index ] );
  end;

  // hier sind ein paar Zeilen ausgelassen worden weil nicht wichtig ;-)

  for index:= 1 to 8 do
  begin
    writeln(' --- Faecher fuer Freitag --- ');
    writeln(' ',index,' Stunde eingeben: ');
    readln( Tag[ 5, index ] );
  end;
end;

//------------------------Spalte------------------------------------------------
procedure P_Spalte(Text:String);
var
  i : Byte;
begin
  for i := 0 to ( 9-( length( Tag[ 1, 1 ] ) ) ) do
    write( ' ' );
end;
//------------------------------------------------------------------------------


//001------------------------Prozedur----------------Ende----------------------------------

//002------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Stunden_ausgeben;
var
  i: Integer;
begin
  //1. Zeile
  write(' ');write(#218);for i:=1 to 50 do write(#196);writeln(#191);
  //2. Zeile
  write(' ');write(#179);write(' STUNDENPLAN:');for i:=1 to 37 do write(' ');
  writeln(#179);
  //3. Zeile
  write(' ');write(#179);for i:=1 to 14 do write(' ');write(#218);
  for i:=1 to 10 do write(#196);write(#194);for i:=1 to 10 do write(#196);
  write(#194);for i:=1 to 10 do write(#196);write(#194);
  for i:=1 to 10 do write(#196);write(#194);for i:=1 to 10 do write(#196);
  writeln(#191);
  //4. Zeile
  write(' ');write(#179);for i:=1 to 14 do write(' ');write(#179);
  write('Montag');write(' ');write(#179);write('Dienstag');
  write(' ');write(#179);write('Mittwoch');write(' ');write(#179);
  write('Donnerstag');write('');write(#179);write('Freitag');
  write(' ');writeln(#179);
  //5. Zeile
  write(' ');write(#179);for i:=1 to 14 do write(' ');write(#195);
  for i := 1 to 54 do write(#220);writeln(#180);
  //6. Zeile
  write(' ');write(#179);for i:=1 to 14 do write(' ');write(#195);
  for i:=1 to 10 do write(#196);write(#197);for i:=1 to 10 do write(#196);
  write(#197);for i:=1 to 10 do write(#196);write(#197);
  for i:=1 to 10 do write(#196);write(#197);for i:=1 to 10 do write(#196);
  writeln(#180);
  //7. Zeile
  write(' ');write(#179);write(' 1. Stunde:');write(' ');write(#179);
  write(Tag[1,1]);P_Spalte('');write(#179);

  readln;

end;
//002------------------------Prozedur----------------Ende----------------------------------

//004------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Menue;
begin
  writeln(' ');
  writeln('XXXX Stundenplan - Menue XXXX');
  writeln('XXXX ______________________ XXXX');
  writeln('XXXX XXXX');
  writeln('XXXX XXXX');
  writeln('XXXX E = Stunden eingeben XXXX');
  writeln('XXXX A = Stunden anzeigen XXXX');
  writeln('XXXX XXXX');
  writeln('XXXX B = Programm beenden XXXX');
  writeln('XXXX ... was willst du tun? Kennziffer und ENTER druecken ... XXXX');
  readln (V_Menue);

  Case V_Menue of
    'E': P_Stunden_einlesen;
    'A': P_Stunden_ausgeben;
    'B': halt;
  end;
end;
//004------------------------Prozedur----------------Ende----------------------------------

//003------------------------Prozedur----------------Anfang--------------------------------
Procedure P_Lizenz;
begin
  writeln(' ');
  writeln('XXXX [j] oder [n] plus ENTER eingeben ... XXXX');
  readln (V_Lizenz);
  Case V_Lizenz of
    'j' : begin end;
    'n' : halt;
 end;
end;

//003------------------------Prozedur----------------Ende----------------------------------

//005------------------------Hauptprogramm-----------Anfang--------------------------------
begin
  P_Lizenz;
  repeat
    P_Menue;
  until 1 = 0; // häh??? na klar, weil der Abbruch des Programms hart in P_Menue erfolgt ;-)
  readln; // das braucht hier kein Mensch
end.
//005------------------------Hauptprogramm-----------Ende----------------------------------
cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat