Mr.Retsim - So 12.12.10 20:55
Titel: Algorithmus für einen Stundenplan
Hallo ich bins wieder,
Das Problem mit der Listbox hat sich erledigt, doch nun haben wir eine neue Hürde zu meistern.
Folgendes Problem: Ich habe den Algorithmus mal auf Deutsch geschrieben, jedoch fehlt mir das nötige Fachwissen für Delphi :)
Schritt 1
>1 Suche Stunde, in der nur ein Lehrer verfügbar ist, wenn "Schritt 1 >1" nicht möglich, Springe zu "Schritt 2 >1"
>2 Setze Lehrer in diese Stunde ein
>3 Streiche Lehrer aus allen anderen Stunden
>4 Spring zurück zu "Schritt 1 >1"
Schritt 2
>1 Suche Stunde, in der nur 2 Lehrer verfügbar sind, wenn "Schritt 2 >1" nicht möglich, springe zu"Schritt 3 >1"
>2 Setze beide Lehrer in diese Stunde ein
>3 Streiche beide Lehrer aus allen anderen Stunden
>4 Spring zurück zu "Schritt 1 >1"
Schritt 3
>1 Suche Lehrer, der nur in einer Stunde verfügbar ist, wenn "Schritt 3 >1" nicht möglich, springe zu "Schritt 4 >1"
>2 Setze diesen Lehrer in diese Stunde ein
>3 Spring zurück zu "Schritt 1 >1"
Schritt 4
>1 Suche Lehrer, der nur in zwei Stunden verfügbar ist, wenn "Schritt 4 >1" nicht möglich, springe zu "Schritt 5 >1"
>2 Setze diesen Lehrer in eine der Stunden ein
>3 Lösche diesen Lehrer aus der anderen Stunde
>4 Spring zurück zu "Schritt 1 >1"
Schritt 5
>1 Suche Stunde, in der <= 3 Lehrer verfügbar sind, wenn "Schritt 5 >1" nicht möglich, beende den Prozess
>2 Setze die 2 Lehrer mit den wenigsten Bereitschaftsstunden ein
>3 Streiche die beiden eingesetzten Lehrer aus allen anderen Stunden
>4 Spring zurück zu "Schritt 1 >1"
Dieser Algorithmus soll dann durchgeführt, sobald ich einen Button drücke: Soweit habe ich es jetzt in Delphi gebracht, jedoch geht es nicht ganz....
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm1.BtstartClick(Sender: TObject); var dayindex, lesindex, anzahl, voranzahl : integer; Stunde: string; begin Teachers.Clear; For dayindex := 0 to 4 do
begin For lesindex := 0 to 4 do Teachers.Clear; fn := IncludeTrailingBackSlash(ExtractFilePath('C:\temp\')) + Day.Items[Day.ItemIndex] + '-' + Lesson.Items[Lesson.Itemindex] + '.txt'; if FileExists(fn) then Teachers.Items.LoadFromFile(IncludeTrailingBackSlash(ExtractFilePath('C:\temp\')) + Day.Items[Day.ItemIndex] + '-' + Lesson.Items[Lesson.Itemindex] + '.txt') else; anzahl := Teachers.Items.Count; if anzahl = 1 then begin Case dayindex of 0: Stunde := 'Monlesson[lesindex+1]' ; 1: Stunde := 'Tuelesson[lesindex+1]' ; 2: Stunde := 'Wedlesson[lesindex+1]' ; 3: Stunde := 'Thulesson[lesindex+1]' ; 4: Stunde := 'Frilesson[lesindex+1]' ; end;
Stunde := Teachers.Items[1] end; end; |
Vielen Dank im Voraus!!!
Moderiert von
Narses: Topic aus Dateizugriff verschoben am So 12.12.2010 um 20:23
Xion - So 20.02.11 18:53
Mr.Retsim hat folgendes geschrieben : |
Folgendes Problem: Ich habe den Algorithmus mal auf Deutsch geschrieben, jedoch fehlt mir das nötige Fachwissen für Delphi :) |
Uff...so viel Text schreckt die Leute ab :D
Erstmal zu deinem Quellcode:
Mr.Retsim hat folgendes geschrieben : |
Delphi-Quelltext 1:
| fn := IncludeTrailingBackSlash(ExtractFilePath('C:\temp\')) + [...] | |
Das nenn ich mal sinnlos :P Nehm doch einfach gleich 'C:\temp\', da gibts nichts dran rum zu ändern ;)
Mr.Retsim hat folgendes geschrieben : |
Delphi-Quelltext 1:
| if FileExists(fn) then Teachers.Items.LoadFromFile(IncludeTrailingBackSlash(ExtractFilePath('C:\temp\')) + Day.Items[Day.ItemIndex] + '-' + Lesson.Items[Lesson.Itemindex] + '.txt') | |
Das ist auch Quark. Schreib doch einfach
Teachers.Items.LoadFromFile(fn);
Ok, zu diesem Zeitpunkt haben wir also die Datei geladen. Zwar Umständlich, aber soweit ok.
Mr.Retsim hat folgendes geschrieben : |
Delphi-Quelltext 1:
| anzahl := Teachers.Items.Count; | |
Jetzt steht die Anzahl der Zeilen in "Anzahl"
Jetzt kommt das seltsame:
Mr.Retsim hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if anzahl = 1 then begin Case dayindex of 0: Stunde := 'Monlesson[lesindex+1]' ; 1: Stunde := 'Tuelesson[lesindex+1]' ; 2: Stunde := 'Wedlesson[lesindex+1]' ; 3: Stunde := 'Thulesson[lesindex+1]' ; 4: Stunde := 'Frilesson[lesindex+1]' ; end;
Stunde := Teachers.Items[1] end; | |
Das ist mal komisch. Es darf nur eine Zeile in der Datei stehen. Soweit ok. Dann weißt du Stunde einen kryptischen String zu (sicher dass die Anführungszeichen dort sein sollen?'. Danach schmeißt du den Inhalt von Stunde aber eh weg, und überschreibst ihn mit Zeile 1 (also alles) aus der Datei ;) Da ist wohl was faul :D
Zu deinem Algorithmus den du oben beschreibst, kann ich überhaupt nichts sagen, da ich deine Datenstrukturen nicht kenne (wo steht welche Information in welchem Format).