Ich habe das einfach mal so geschrieben, wie man das auch in der Realität machen würde:
Delphi-Quellcode:
procedure VerladeFaesser( const VerladeDatei, ContainerDatei : TFileName; Anzahl : integer );
var
VerladeListe, ContainerListe : TStrings;
begin
// Ich hole mir schon mal ein leeres Blatt, ich muss ja was aufschreiben :o)
ContainerListe := TStringList.Create;
try
// So mal das Blatt mit den Fässern in die Hand nehmen
VerladeListe := TStringList.Create;
try
// Jetzt lese ich mal, was da so drauf steht
VerladeListe.LoadFromFile( VerladeDatei );
// Ok, ich soll also <Anzahl> Fässer in den Container packen
while // Solange
( ContainerListe.Count < Anzahl ) // im Container nicht <Anzahl> Fässer sind
and // und
( VerladeListe.Count > 0 ) // und es noch Fässer zum Verladen gibt
do // werde ich
begin
ContainerListe.Add( VerladeListe[ 0 ] ); // ein Fass in den Container bringen und auf die Pack-Liste schreiben
VerladeListe.Delete( 0 ); // und dann kann ich das Fass von meiner Verlade-Liste streichen
end;
// So, jetzt bin ich fertig mit dem Verladen, jetzt nur noch den Containerinhalt zu Papier bringen
ContainerListe.SaveToFile( ContainerDatei );
// Jetzt brauche ich die VerladeListe nicht mehr
finally
VerladeListe.Free;
end;
// und die ContainerListe kann ich auch weggeben
finally
ContainerListe.Free;
end;
end;
Und effektiv enthält das 5 (!) Zeilen Logik
Noch weniger Logik ... nun ja, dein Prof. scheint sehr anspruchslos zu sein
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)