Autor |
Beitrag |
Mr.Retsim
      
Beiträge: 16
|
Verfasst: Mi 24.11.10 21:35
Hallo,
bin ganz neu in dem Forum und noch ein ziemlicher Anfänger was Delphi angeht! Also bitte habt Geduld und Verständnis!
Also für die Schule müssen wir eine Bereitschaftsliste erstellen.
D.h.: In ein Edit Feld werden 3 Namen eingetippt und durch einen Button auf einer Listbox angezeigt. Bei Bedarf kann man die Einträge in der Listbox auch löschen. Soweit alles kein Problem.
Zudem habe ich noch zwei weitere Listboxen, eine mit den Wochentagen, die andere mit den Stundenzahlen (1-5). In diese habe ich ein Array angelegt, welches mir dann beim Ausführen des Programms die Einträge (Wochentage, Stundenzahl) anzeigt.
Nun möchte ich aber einen Tag und eine Stunde markieren und die Namen die in der Listbox stehen unter Tag und Stunde (z.b. Montag 3te Std) in einer Textdatei durch einen Buttonklick speichern. Diese Textdatei soll auch wieder wenn ich Montag und 3te Std. markiere durch einen Buttonklick geladen werden und in der Listbox erscheinen.
Ich habe das mit den Befehlen (Teachers=Listbox)
Teachers.Items.SaveToFile('Auswahl.txt'); und ListBox1.Items.LoadFromFile('Auswahl.txt')
versucht… doch dies funktioniert nicht und ich glaube, dass der Algorithmus etwas länger und mit mehr Informationen gespickt sein muss.
Vielen Dank im Voraus!!!!!
Mein Code:
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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| var Form1: TForm1; MonLesson: array[1..5] of integer; TueLesson: array[1..5] of integer; WedLesson: array[1..5] of integer; ThuLesson: array[1..5] of integer; FriLesson: array[1..5] of integer;
implementation
{$R *.dfm}
procedure TForm1.BtaddClick(Sender: TObject); begin Teachers.Items[Teachers.ItemIndex] := Edit1.Text; Edit1.Text := ''; end;
procedure TForm1.FormCreate(Sender: TObject); begin Day.Items.Add('Monday'); Day.Items.Add('Tuesday'); Day.Items.Add('Wednesday'); Day.Items.Add('Thursday'); Day.Items.Add('Friday'); Lesson.Items.Add('1. Lesson'); Lesson.Items.Add('2. Lesson'); Lesson.Items.Add('3. Lesson'); Lesson.Items.Add('4. Lesson'); Lesson.Items.Add('5. Lesson');
end;
procedure TForm1.TeachersClick(Sender: TObject); begin Teachers.Perform(LB_SetHorizontalExtent, 5000, 0); end;
procedure TForm1.BtaddKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_Return then Btadd.Click; end;
procedure TForm1.btdeleteClick(Sender: TObject); begin Teachers.DeleteSelected; end;
procedure TForm1.btcloseClick(Sender: TObject); begin close; end;
procedure TForm1.BtsaveClick(Sender: TObject); begin Teachers.Items.SaveToFile('Auswahl.txt'); end;
procedure TForm1.btloadClick(Sender: TObject); begin end;
end. |
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mi 24.11.10 22:03
Meinst Du in der Art?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var fn:String; begin fn := IncludeTrailingBackSlash(Paramstr(0)) + IntToStr(Day.Itemindex) + '_' + IntToStr(Lesson.Itemindex) + '.txt'; Teachers.Items.SaveToFile(fn);
bzw. if FileExists(fn) then Teachers.Items.LoadFromFile(fn); end; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Zuletzt bearbeitet von bummi am Mi 24.11.10 22:47, insgesamt 1-mal bearbeitet
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Mi 24.11.10 22:45
Hallo Vielen Dank für die rasche Antwort
das sieht schon mal sehr gut aus,
den ersten Befehl habe ich schon einmal bei einem ähnlichen Thema gesehen, wenn ich ihn jedoch hier einfüge
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.BtsaveClick(Sender: TObject); begin fn := IncludeTrainlingBackSlash(Paramstr(0)) + IntToStr(Day.Itemindex) + '_' + IntToStr(Lesson.Itemindex) + '.txt'; Teachers.Items.SaveToFile(fn); end; |
kommt die Meldung "Undefinierter Bezeichner: 'IncludeTrainlingBackSlash'"
Den zweiten Befehl hatte ich mir auch mit einer Schleife vorgestellt, jedoch passiert da nichts wenn ich auf den Load Button klicke.
Danke!
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mi 24.11.10 22:49
war ein Tippfehler, IncludeTrailingBackSlash
laden über eine Schleife?
ich dachte Du willst die Lehrer für gewählten Tag/Stunde anzeigen?
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Für diesen Beitrag haben gedankt: Mr.Retsim
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 24.11.10 23:08
Muss ich dazu Teachers.Items.SaveToFile('Auswahl.txt'); noch was sagen? 
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Mi 24.11.10 23:13
Also, mein Programm sieht so aus:
[img] www.s1.directupload....lcu8ok_jpg.htm[/img]
Die Namen die in der Listbox sind sollen unter dem markierten Tag und der markierten Stunde mit einem Click auf Save gespeichert werden.
Wenn ich dann wieder Tag und Stunde markiere und auf Load klicke möchte ich das diese Namen wieder in der Listbox erscheinen.
Den Tippfehler habe ich ausgebessert, nun läuft das Programm, aber wenn ich dann auf Save drücke kommt folgende Fehlermeldung:
Im Projekt Project1.exe ist eine Exception der Klasse EFCreateError aufgetreten. Medlung: 'Datei "C:\Users...\0_2.txt" kann nicht erstellt werden. Das System kann den angegebenen Pfad nicht finden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Wenn ich dann auf OK drücke, führt der mich zum Quellcode un markiert folgende Zeile mit einem Grünen Pfeil:
Delphi-Quelltext 1:
| Teachers.Items.SaveToFile(fn); |
Danke für ihre Geduld!!!!
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Mi 24.11.10 23:18
@Lukie,Entschuldigung aber das verstehe ich nicht. Wie gesagt ich bin noch ein ziemlicher Anfänger. Das Grobe verstehe ich ja, nur weiß nicht wo ich wann welche Befehle einsetzen muss??!
Luckie hat folgendes geschrieben : | Muss ich dazu Teachers.Items.SaveToFile('Auswahl.txt'); noch was sagen?  |
Danke
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 24.11.10 23:19
Was meinst du., wo Windows die Datei speichert?
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Mi 24.11.10 23:31
Ahhh, also du meinst vor dem .txt muss ich den Speicherpfad eingeben?
Weil ich hatte auch noch wo anders gelesen, dass man dies nicht machen muss.
Naja, aber würde diese Änderung ausreichen um das Programm so zum laufen zu bringen wie ich möchte?
Danke und Gruß
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 24.11.10 23:54
Keine Ahnung, aber es stellt zumindest sicher, dass die Datei auch wieder gefunden wird beim Laden und nicht irgendwo auf der Festplatte gespeichert wird.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mi 24.11.10 23:57
Nein...leider bin ich heute wirklich müde, da ist noch ein Fehler
Delphi-Quelltext 1:
| fn := IncludeTrailingBackSlash(ExtractFilePath(Paramstr(0))) + ..... |
ExtractFilePath fehlt, sorry.
Paramstr(0) ist der Pfad Deiner Anwendung + Name Deiner Anwendung
ExtractFilePath entfernt den Namen Deiner Anwendung.
Asche auf mein Haupt.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Do 25.11.10 21:16
Hallo,
sry für die späte Antwort, ich war heute lang in der Schule
Also erst mal vielen Dank!
ES FUNKTIONIERT!!!!!!!!!!!!!
Vielen Vielen Dank
So sieht es jetzt aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.BtsaveClick(Sender: TObject); begin fn := IncludeTrailingBackSlash(ExtractFilePath('C:\Users\Mattheus\Desktop\INFO\Text Dateien')) + IntToStr(Day.Itemindex) + 'Bereitschaftsliste.exe' + IntToStr(Lesson.Itemindex) + '.txt'; Teachers.Items.SaveToFile(fn); end; |
Aber vielleicht können sie mir noch bei einem kleineren Problem helfen:
Nachdem ich etwas in das Editfeld eingetragen habe, möchte ich dass es auch mittels Druck auf die Entertaste in der Listbox erscheint. Bisher habe ich folgendes und es erscheint keine Fehlermeldung:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.BtaddKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_Return then Btadd.Click; end; |
Vielen Dank, sie haben mir echt sehr geholfen!!!!
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 25.11.10 21:19
Das Event sollte wohl am Editfeld hängen?
Und hier Duzen sich alle ....
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Do 25.11.10 21:34
Gut stimmt....
Aber jetzt ist mir noch etwas aufgefallen:
Das mit dem Speichern und Laden geht wunderbar! Wenn ich jetzt aber z.B. für Montag 3. Std.: Müller, Klaus, Peter eintrage und speichere kann ich es nicht wieder laden, sobald ich für z.B. Dienstag 4. Std. Franz, Karl, Hans eintrage.
Dann wird es nämlich überschrieben un lädt anstatt Müller, Klaus, Peter hat Franz, Karl, Hans.....
Kann es sein, dass nur die Save und Load Buttons programmiert wurden, unabhängig davon welche Stunde/Tag markiert wurde?
Weil ich möchte für jeden Tag und Stunde verschiedene Namen speichern. Ein Freund hat mir irgendwas von Strinlists und Pointerlists gesagt... vielleicht muss man in dem Fall so was verwenden. (Also das die Pointer dann auf verschiedene Speicherzellen zeigen und dass der Inhalt da wieder auszulesen ist)....
Danke
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 25.11.10 21:59
baust Du den Dateinamen so auf?
Delphi-Quelltext 1:
| Pfad + IntToStr(Day.Itemindex) + '_' + IntToStr(Lesson.Itemindex) + '.txt' |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Do 25.11.10 22:11
Ja: also so sieht jedenfalls der Code aus:
Delphi-Quelltext 1: 2:
| fn := IncludeTrailingBackSlash(ExtractFilePath('C:\Users\Mattheus\Desktop\INFO\Text Dateien')) + IntToStr(Day.Itemindex) + 'Bereitschaftsliste.exe' + IntToStr(Lesson.Itemindex) + '.txt'; Teachers.Items.SaveToFile(fn); |
Kann man dem da nicht irgendwie sagen: For every Day/Lesson, create new .txt; also sowas in der Richtung, weil er speichert ja alle Textdateien einzeln ab, überschreibt diese aber....
DANKE
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 25.11.10 22:13
Kannst Du mir mal den Code als Anhang schicken?
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Do 25.11.10 22:27
Klar:
Also ich habe da noch 2 Buttons die noch keine Funktionen haben.
Einloggen, um Attachments anzusehen!
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 25.11.10 22:40
Die Funktion zum Laden sollte auch wissen was sie laden soll....
hier mußt Du freilich fn auch setzen, ich würde hier auch keine globale Variable nehmen, im Moment liest Du aus der Datei in die Du zuletzt gespeichert hast.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Mr.Retsim 
      
Beiträge: 16
|
Verfasst: Do 25.11.10 23:26
Ja das klingt plausibel!
Habs jetzt geändert:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.btloadClick(Sender: TObject); begin if FileExists(fn) then Teachers.Items.LoadFromFile(IncludeTrailingBackSlash(ExtractFilePath('C:\Users\Mattheus\Desktop\INFO\Text Dateien')) + IntToStr(Day.Itemindex) + 'Bereitschaftsliste.exe' + IntToStr(Lesson.Itemindex) + '.txt');
end; |
Ich weiß nicht ob du auf das hinaus wolltest, aber jetzt läuft es wo wie es soll!
Weißt du vielleicht, warum er die Texdateien im Ordner INFO speichert, anstatt in INFO-> Text Dateien?
Vielen Dank!!
|
|