hmmm.. den originalen Quelltext poste ich lieber nicht. Der ist erstens ziemlich lang, und recht unübersichtlich, da ich nicht nur eine Liste darin habe, sondern mehrere.
Noch etwas zum Prinzip des Programms:
Ich habe eine Liste von Personen. Diese Liste steht in einer Tlistbox, wobei hinter jedem Eintrag ein Objekt vom Typ "Person" steht. "Person" hat u.a. die Attribute "name", "Geburtstag", "Urlaubsliste" und "istinaktullerliste" etc. (Urlaubsliste ist eine Stringlist, in der die einzelnen Urlaubstage stehen)
"istinaktullerliste" ist ein boolean wert, der später gebraucht wird.
Das sind die verfügbaren Personen.
Dann habe ich eine Liste von Terminen. Ein Termin hat u.a. die Eigenschaften "Datum", "Anzahlbenötigter Personen" und "Personenliste". Diese Personenliste ist ein dynamisches Array vom Typ "Person", dessen Länge nach Eingabe der benötigten Zahl gesetzt wird.
Die Verwaltung all dieser Listen wurde schon ausgiebig getestet, da dürfte kein Fehler mehr drin liegen.
Die Hauptprozedur des Programms führt jetzt im wesentlichen folgende Schleife durch:
Quelltext
1:
| for i:=0 to terminliste.count-1 do suche(i,1) |
Der erste Parameter gibt die Terminnr an, der zweite steuert die Position, ab der in der Liste der verfügbaren Personen gesucht wird.
Wenn in der Prozedur suche eine Person eingefügt wird, wird der Wert "istinaktuellerliste" auf true gesetzt. Darüber kann ich rausfinden, welche Personen ich grade betrachte, ohne noch eine neue liste zu erstellen.
In der Funktion "Bewertung" wird aus den Personen mit "inaktuellerliste=true" ein Array gefüllt, was dann genauer untersucht wird. Ergebnis dieser Funktion ist auf jeden Fall ein Integer Wert, den ich mit dem besten zuvor gefunden Wert vergleichen möchte.
Nur kommt da die Access Violation. Selbst wenn ich nochsoviel quatsch mit den dynamischen Arrays und listen mache, dann dürfte die Zuweisung eines IntegerWertes an eine Integer Variable doch nicht schiefgehen, oder?