Autor Beitrag
Mr.Retsim
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: So 12.12.10 20:55 
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....
ausblenden 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 user profile iconNarses: Topic aus Dateizugriff verschoben am So 12.12.2010 um 20:23
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 20.02.11 18:53 
user profile iconMr.Retsim hat folgendes geschrieben Zum zitierten Posting springen:
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:
user profile iconMr.Retsim hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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 ;)

user profile iconMr.Retsim hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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.

user profile iconMr.Retsim hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
anzahl := Teachers.Items.Count;					

Jetzt steht die Anzahl der Zeilen in "Anzahl"

Jetzt kommt das seltsame:

user profile iconMr.Retsim hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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).

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)