Hallo erstmal 
Ich schreibe im Moment im Rahmen meiner Facharbeit in Informatik ein Programm, dass einen Stundenplan von der Klasse 5 bis zur 10 für eine Schule generieren soll.
Zu Anfang: Ich programmiere noch nicht sehr lange, und ich bin mir sicher, dass die Methoden, die ich angewandt habe, vielleicht nicht die besten sind, aber wäre trotzdem schön, wenn es sich mal jemand angucken würde.
Die verwendete Sprache ist Delphi 7, habe das Programm mit Borland Delphi 7 geschrieben.
Nun zu meinem Problem:
Es tritt an einer bestimmten Stelle, wenn ich den Plan generieren lassen will, immer einen Laufzeitfehler, den ich einfach nicht finden kann. Finde es eh schwer, seine eigenen Fehler zu finden, aber naja, das ist eine andere Sache ... ;-)
Ich bin mir ziemlich sicher, dass der Fehler in dieser Function ist:
Hier nochmal die aufgerufene Funktion generateTage:
Ob die Überlegungen so stimmen, kann ich nicht sagen, konnte es ja noch nicht testen.
Ich habe den kompletten Quelltext auch nochmal hochgeladen, falls in diesen beiden Abschnitten nichts zu finden sein sollte.
http://home.arcor.de/phearo/facharbeit/Programm.rar
Ich hoffe, ihr könnt mir helfen, Danke schonmal!
//edit:
tut mir leid, die Formatierung ist verloren gegangen beim Einfügen.
Ich schreibe im Moment im Rahmen meiner Facharbeit in Informatik ein Programm, dass einen Stundenplan von der Klasse 5 bis zur 10 für eine Schule generieren soll.
Zu Anfang: Ich programmiere noch nicht sehr lange, und ich bin mir sicher, dass die Methoden, die ich angewandt habe, vielleicht nicht die besten sind, aber wäre trotzdem schön, wenn es sich mal jemand angucken würde.
Die verwendete Sprache ist Delphi 7, habe das Programm mit Borland Delphi 7 geschrieben.
Nun zu meinem Problem:
Es tritt an einer bestimmten Stelle, wenn ich den Plan generieren lassen will, immer einen Laufzeitfehler, den ich einfach nicht finden kann. Finde es eh schwer, seine eigenen Fehler zu finden, aber naja, das ist eine andere Sache ... ;-)
Ich bin mir ziemlich sicher, dass der Fehler in dieser Function ist:
Code:
procedure TForm1.generate(pTag, pStd : Integer);
begin
if momentaneKlasse = '5a' then
begin
if self.generateTage(PlanKlasse5a, '5a', pTag, pStd, false) = true then //Wenn die Klasse in der Std frei hat ...
begin
if self.generateTage(self.generateKlasse(Klasse5a), '5a', pTag, pStd, true) = true then //Wenn der Lehrer in der Std frei hat ...
begin
PlanKlasse5a.MosetzeKlErste(tempFach);
Klasse5a.naechsterLehrer;
if (pStd <= (Klasse5a.gibWochenStd/5 + 1)) and (pTag = 5) then
begin
self.naechsteKlasse;
self.generate(1, 1);
end;
if pStd <= (Klasse5a.gibWochenStd/5 + 1) then //+1, damit nicht gerade am Fr 7 Std zustande kommen, wenn es auch am Mo ginge.
self.generate(pTag, pStd + 1) //nächste Std am selben Tag nehmen.
else
self.generate(pTag + 1, 1); //Wieder mit der 1. Std am nächsten Tag anfangen.
end
else
begin
Klasse5a.naechsterLehrer;
self.generate(pTag, pStd);
end;
end
else
begin
self.generate(pTag, pStd + 1);
end;
end;
//ab hier abgeschnitten.
Hier nochmal die aufgerufene Funktion generateTage:
Code:
function TForm1.generateTage(pPlan : Plan; pKlasse : String; pTag, pStd : Integer; pLehrer : boolean) : boolean;
begin
if genKlErfolg = false then
result:=false
else //Wird alles nicht überprüft, falls genKlErfolg false ist!
begin
//Stundenüberprüfung - Montag
if pTag = 1 then
begin
if pStd = 1 then
begin
if pLehrer = true then
begin
if pPlan.MosetzeLErste(pKlasse) = true then
result:=true;
end
else
begin
if pPlan.MoKlErsteFrei = true then
result:=true
else
result:=false;
end;
end;
// ab hier wieder abgeschnitten
Ob die Überlegungen so stimmen, kann ich nicht sagen, konnte es ja noch nicht testen.
Ich habe den kompletten Quelltext auch nochmal hochgeladen, falls in diesen beiden Abschnitten nichts zu finden sein sollte.
http://home.arcor.de/phearo/facharbeit/Programm.rar
Ich hoffe, ihr könnt mir helfen, Danke schonmal!
//edit:
tut mir leid, die Formatierung ist verloren gegangen beim Einfügen.