Autor Beitrag
Knedcox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: So 04.09.05 17:55 
Hi,

danke erstmal an alle die mir mit Rat und Tat zu Seite gestanden haben. Mein Programm ist jetzt fast fertig und ich wollt Euch mal zeigen, was dabei rausgekommen ist.

Es soll meinem Hausmeister in der Schule dabei helfen, seine Schlüssel zu verwalten. Eigentlich erklärt sich das Programm von selbst (hoffentlich). Das einzige was noch nicht funktioniert, was aber eigentlich ein grundlegender Bestandteil sein müsste, ist, dass man jedem Lehrer lediglich einen Schlüssel zuordnen kann.

Bzw. man kann zwar jedem mehrere zuordnen, nur kann man diese Schlüssel leider nicht getrennt voneinander aufrufen. Wäre sehr wichtig, wenn der Hausmeister z.B. gucken möchte, welche Lehrer alle den Biosaal-Schlüssel haben. Habs schon auf mehrere Arten wochenlang probiert, komm aber nicht weiter.


PS. Wahrscheinlich hab ich das Programm nicht auf die einfachste und unkomplizierteste Weise geschrieben, aber da ich nur zwei Wochen in der Schule vor den Ferien mit Delphi zu tun hatte, bin ich doch ganz stolz, dass es soweit funktioniert (Danke an der Stelle noch mal für die Geduld:wink: ).

PPS. Für Vorschläge, wie ich mein letztes Problem lösen könnte, wäre ich dankbar.

PPPS. Die ersten Änderungen hab ich vorgenommen, jetzt kann die Version 1.1 downgeloadet werden.
Einloggen, um Attachments anzusehen!
_________________
Habt bitte Geduld, bin nur eine Anfängerin...


Zuletzt bearbeitet von Knedcox am So 04.09.05 19:43, insgesamt 5-mal bearbeitet
adfontes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: So 04.09.05 18:00 
user profile iconKnedcox hat folgendes geschrieben:
PPPS. Weiß nicht, wie man den ganzen Ordner hochladen kann... Wollte ihn auf eine Homepage online stellen, aber das klappt irgendwie auch nicht, weil er kein Verzeichnis anzeigt...


ich würd den ordner packen (in ein rar archiv o.Ä.) und dann also halt die Archivdatei hochladen :)

btw. find ich eine nette geste von dir dem hausmeister gegenüber, so ein programm in deiner freizeit zu programmieren, oder war es eine art zusatzaufgabe?!?



greetz
adfontes

PS: ich gucks mir später auf jeden fall mal an, wollte nur grade das mit dem archiv loswerden ^^
Knedcox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: So 04.09.05 18:14 
Das ist ne freiwillige Aufgabe vom Informatiklehrer für nen Pluspunkt.
Danke erstmal für den Tipp; probiers gleich mal aus.

_________________
Habt bitte Geduld, bin nur eine Anfängerin...
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: So 04.09.05 18:21 
Habs mir mal angeguckt :shock:
Beim Starten meckert er, er könne eine Hintergrundbilddatei (D:\Schlüssel\Lil Hintergrund.bmp) nicht finden.
(Normalerweise sollte man keine Eigenen Hintergründe setzen, sondern den Windows-Standard verwenden.

Eingentliches Programm:
Ganz Gut, nur: Wird automatisch gespeichert, oder kann man nicht speichern?
Eine Auflistung aller Lehrer wäre sinvoll, wenn man die Suchfelder leer lässt kommt nämlich die Meldung, man solle etwas eingeben. Also: entweder zusätzlicher Button (z.B.: "Alle Lehrer anzeigen"), oder bei leeren Suchfeldern alle anzeigen. Genauso bei Ändern und löschen.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
adfontes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: So 04.09.05 18:25 
user profile iconjakobwenzel hat folgendes geschrieben:
Habs mir mal angeguckt :shock:
Beim Starten meckert er, er könne eine Hintergrundbilddatei (D:\Schlüssel\Lil Hintergrund.bmp) nicht finden.
(Normalerweise sollte man keine Eigenen Hintergründe setzen, sondern den Windows-Standard verwenden.


joa, der bg motzt bei mir auch rum ^^ ... aber ich würde, wenn schon eigene Hingergründe, dann nicht den absoluten Pfad angeben... dadruch machst du das Programm eigentlich nur zu deinem rechner kompatibel, bzw. zu rechner, die es EXAKT gleich lagern... (bin ja froh, dass ich ne D-Platte hab zum testen *g*)


greetz
adfontes

//Edit: find den lila bg ohnehin net so doll, also im prinzip froh, dass er net geht (sorry)
//Edit2: ist es nicht was überflüssig, ein ganzes memofeld anstatt ein einfaches TEdit/TLabelEdEdit bei dem "neu anlegen" zu verweden ? oder haben bei euch die Lehrer Namen die man über mehrere Zeilen schreiben muss (davon mal abgesehn, dass sie bei der suche dann ohnehin wieder in eine Zeile kommt oO
Knedcox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: So 04.09.05 18:43 
1. Nee, ich glaube der Hausmeister brauch keine Auflistung aller Lehrer. Das Programm ist dazu da, um z.B. nach einem Lehrer oder einem Schlüssel zu suchen, um zu gucken, wer was hat. Kann mir keine Situation vorstellen, warum der Hausmeister alle gleichzeitig sehen wollte...

2. Das mit dem Hintergrund müsste jetzt funktionieren und außerdem bin ich ein Mädchen und find lila ganz toll. Ist doch mal was anderes. Ich hab bestimmt ne Stunde gesucht, bis ich überhaupt ne Farbe hatte, die meinen Ansprüchen genügt.

3. Bei der Eingabe gibt es aus dem Grund Memofelder, da man ja auch nach Schlüsseln anlegen kann (z.B. Biosaal-Schlüssel haben zehn Lehrer).

4. Die Frage mit dem Speichern versteh ich nicht so ganz... Wenn man auf speichern drückt, speichert er es auf jeden Fall mal.


Merci schon mal vorab für die Anregungen.

_________________
Habt bitte Geduld, bin nur eine Anfängerin...
adfontes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: So 04.09.05 18:50 
user profile iconKnedcox hat folgendes geschrieben:
2. Das mit dem Hintergrund müsste jetzt funktionieren und außerdem bin ich ein Mädchen und find lila ganz toll. Ist doch mal was anderes. Ich hab bestimmt ne Stunde gesucht, bis ich überhaupt ne Farbe hatte, die meinen Ansprüchen genügt.

jedem das seine ^^

user profile iconKnedcox hat folgendes geschrieben:
3. Bei der Eingabe gibt es aus dem Grund Memofelder, da man ja auch nach Schlüsseln anlegen kann (z.B. Biosaal-Schlüssel haben zehn Lehrer).

zu dem Schlüssel-Memofeld sag ich ja nichtmal was, mir gings eher um das Eingabe Feld für die Lehrer, wenn ich da jetzt z.B.
ausblenden Quelltext
1:
2:
3:
4:
herr bla
frau kA
mööp 
etc

eingebe und speichere, dann krieg ich bei der suche alles in einer Zeile
ausblenden Quelltext
1:
herr blafrau kAmööp etc					

und das sieht nich so wirklich so gewollt aus, oder ?!?
// edit: bei den schlüsseln übrigens genauso^^
// edit2: beim einfügen hier hab ich über STRG+C und STRG+P rüberkopiert... da hat er dann auch wieder alles in einzelne zeilen gepackt... also :?:

user profile iconKnedcox hat folgendes geschrieben:
4. Die Frage mit dem Speichern versteh ich nicht so ganz... Wenn man auf speichern drückt, speichert er es auf jeden Fall mal.

:gruebel: wenn ich jetzt wüsste was du damit meinst oO

greetz
adfontes
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: So 04.09.05 19:02 
Mit abspeichern meinte ich als Datei auf der Festplatte ablegen, die bei Programmstart wieder eingelesen wird. Sonst muss der Hausmeister bei jedem Programmstart die Lehrerliste neu erstellen :lol: :lol: :lol:

Der Hintergrund geht noch nicht. Du musst bei dem Dateinamen anstatt
ausblenden Delphi-Quelltext
1:
Image1.picture.loadfromfile('D:\Schlüssel\Lila Hintergrund.bmp');					

ausblenden Delphi-Quelltext
1:
Image1.Picture.LoadFromFile(IncludeTrailingBackslash(ExtractFilePath(Application.ExeName))+'Lila Hintergrund.bmp');					


Application.ExeName gibt den Dateinamen der Programmdatei zurück, der dann an ExtractFilePath übergeben wird. ExtractFilePath gibt den Pfad der übergebenen Datei (je nach Windows-Version mit oder ohne Backslash) zurück. Damit der Backslash auf jeden Fall vorhanden ist, wird die Funktion IncludeTrailingBackslash aufgerufen, die einen Backslash an das Ende des übergebenen Strings hängt, falls da nicht schon einer ist. Danach wird der Dateiname der Bilddatei drangehängt, und das fertige Konstrukt wird am LoadFromFile übergeben.

P.S.:Anstatt Application.ExeName kann auch ParamStr(0) benutzt werden.
P.P.S.: Application.ExeName ruft intern auch nur ParamStr(0) auf.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Knedcox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: So 04.09.05 19:24 
1. Das mit dem Bild werd ich gleich mal so machen. Update kommt sofort...

2. Ich speicher das nicht auf den PC, weil ich gedacht hab, wenn er die compilierte Version an und aus macht, bleiben die Daten drin. Oder irre ich mich da?

3. Adfontes, das ist genau mein Problem (mit den mehreren Schlüsseln und Lehrern). Da weiß ich halt noch nicht, wie ich das lösen soll...

Problem erklär ich noch mal:
Das einzige was noch nicht funktioniert, was aber eigentlich ein grundlegender Bestandteil sein müsste, ist, dass man jedem Lehrer lediglich einen Schlüssel zuordnen kann bzw. jedem Schlüssel nur einen Lehrer.

Bzw. man kann zwar mehrere zuordnen, nur kann man diese Schlüssel/Lehrer leider nicht getrennt voneinander aufrufen. Wäre sehr wichtig, wenn der Hausmeister z.B. gucken möchte, welche Lehrer alle den Biosaal-Schlüssel haben. Habs schon auf mehrere Arten versucht.

Eine davon: Ich habe eine Listbox mit angelegt (auf das vierte Formblatt) und dies auf invisible gemacht. Dann hab ich den Befehl gegeben, dass alles was in die Memos geschrieben wird, in die Listboxen übertragen wird und von wollte dies dann von dort aus speichern, in dem ich den Inhalt der Listbox (mit delimetedText) einem String zuordne. Das hatte soweit funktioniert (bis auf die Groß- und Kleinschreibung). Bei der Suche wollte ich die Daten dann wieder aus dem String raus holen, was aber nicht funktionierte. Deswegen hab ich dann erstmal alles wieder rückgängig gemacht.

Hoffe, das hat jetzt jeder verstanden :wink: .

_________________
Habt bitte Geduld, bin nur eine Anfängerin...
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 04.09.05 19:33 
- man sollte das formular nicht vergrößern können.

- Alles sehr großzügig aufgebaut vielleicht etwas kompackter machen

- wenn man auf einen button klickt wird das formular zurückgesetzt ?

- das programm sollte mit "Datensatz anlegen" anfangen

- Vielleicht etwas benutzerfreundlicher machen, so leicht steigt man da net durch

- Statt Memos lieber Listboxen verwenden

- Schlüssel sollte man selbst erstellen und dann einem Leherer zB per Combobox zuweisen können

- Beim Suchen kommt immer Suchbegriff nicht vorhanden :?

- Liegt wohl daran, dass neu angelegte datensätze nicht gespeichert werden

- Alles andere funzt auch irgendwie net so recht :roll:
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: So 04.09.05 19:43 
Die Comilierte Version bleibt bestehen. Beim Starten wird das Programm in den Speicher geladen. Danach wird der Maschinencode ausgeführt. Die Variablen werden im Arbeitsspeicher gespeichert. Wenn die Variablen gespeichert werden sollen, muss eine Datei erstellt werden, in die dann die Variablen geschrieben werden. Beim Laden muss die Datei dann geöffnet werden, und die Variablen werden gelesen.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
BasicMan33
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54

Win 95, Win XP
D7
BeitragVerfasst: So 04.09.05 20:20 
Hab mir den Code zwar noch nicht angeschaut, aber kann es sein, dass das Programm
nach Beendigung im Hintergrund als Task weiterläuft? Ist zumindest bei mir so.

Wie schaffst du es bloß, zu wissen, welche Bezeichnung wohin gehört. :shock:
Ich bin etwas faul und wollte jetzt nicht die einzelnen Buttons umbenennen *g*


Zuletzt bearbeitet von BasicMan33 am So 04.09.05 20:25, insgesamt 1-mal bearbeitet
adfontes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: So 04.09.05 20:20 
joa, ich würde es wohl so machen...

ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
Type A = record
   teacher : String[25]; // wird wohl keiner namen haben die über 25 zeichen raus gehen oder ?
   key : array[1..5of String[15]; // 1-5 schlüssel, wenn halt kein 2.3.4.5. schlüssel vorhanden is halt leer lassen ;)
   sig : String[3]; // bei uns gibts keine längern kürzel(habs mal sig genannt) als 3 zeichen
end;

var f : file of A;
    group : A;
//...
//... blablabla
//...

group.teacher := Edit??.Text; // Edit?? soll die editbox für den lehrer sein halt was du da hast, wo du den ausließt
group.key[1] := Edit??.Text; // schlüssel no.1
if Edit.??.Text<>'' then // überprüft ob das eingabefeld für den 2. schlüssel überhaupt ausgefüllt wurde
  group.key[2] := Edit??.Text; // weist den text aus dem eingabefeld dem 2. key-array element zu
if Edit.??.Text<>'' then // überprüfung wie oben...
  group.key[3] := Edit??.Text;
// ...
group.sig := Edit??.Text // eingabe des Kürzels
// ...

// ab hier wird gespeichert ;)

AssignFile (f,(IncludeTrailingBackslash(ExtractFilePath(Application.ExeName))+'Save.dat')); // weist f die Datei zu
if filesize(f) = 0 then // überprüft ob die datei leer ist
  begin
   rewrite(f); // die datei wird erstellt
   write(f,group); // schreibt die daten von "group" in die datei
  end 
else
  begin
   seek(f,filesize(f)); // setzt den zeiger auf das letzte element, damit keine alten daten überschrieben werden
   write(f,group); //  schreibt die daten von "group" in die datei
  end;
closefile(f); // schließt die datei

// lesen der daten aus der datei

AssignFile (f,(IncludeTrailingBackslash(ExtractFilePath(Application.ExeName))+'Save.dat')); // weist f die Datei zu
reset(f) // setzt den zeiger auf das 0. element (also den anfang ^^)
while not eof(f) do // bis zum ende der datei, also bis JEDES gespeichertes element mal durch ist ^^
  begin 
   read(f,group); // liest die daten von der datei und gibt sie in den group-record
   //... immer dann die daten aus group irgendwo reinlagern, wie schon vorgeschlagen lehrer in ne combobox o.Ä.
  end;
closefile(f); // schließt die datei

// ... usw.


hab das jetzt einfach mal so aus dem kopf hingekrizelt, aber sollte eigentlich so funktionieren, wenn auch nicht so doll, aber naja, bin ja selbst noch anfänger ;)
ich denke mal das sollte dir für den anfang weiterhelfen (hoff ja mal nicht, dass es schon bissel zu viel hilfe war ^^


greetz
adfontes

// edit: ist bei mir auch so, dass das weiterläuft im hintergrund ^^
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 04.09.05 20:24 
bei mir auch, auch als er das bild net findet :lol:
adfontes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win7 (64bit), WinXP
Delphi 2010 Prof, Delphi XE2 (Trial)
BeitragVerfasst: So 04.09.05 20:28 
wenn du die farbe siehst, denkst du auch an deine signatur user profile iconF34r0fTh3D4rk "it's not a bug, it's a feature" ;)

(sorry, aber musst ich ma loswerden ... mag lila net so, sorry (wird dem hausmeister glaub ich auch so gehn))


greetz
adfontes
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 05.09.05 15:19 
ich gucks mir vielleicht noch mal an wenn es "richtig" fertig ist, also wirklich macken und schmierfrei 8) auch ohne die kleinen schönheitsfehler und ohne gay-hintergrund ;)
Knedcox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Mo 05.09.05 18:18 
Hui, das sind ja viele Meinungen und Tipps und Kritiken. Ich fang mal ganz vorne an...

Zum Beitrag von F34r0fTh3D4rk:
Versetz dich mal in den Hausmeister. Wahrscheinlich legt er am Anfang alle Daten komplett an und braucht den Menüpunkt "Neu anlegen" danach fast nie wieder. Im Vordergrund des Programms steht die Suche, denn dafür wird er es nutzen.
Außerdem hat mein 40-jähriger Vater schon Probleme damit, kleinere Buttons und Schriftzüge auf dem PC zu entziffern. Mein 50-jähriger brilletragender Hausmeister weiß die Übersichtlichkeit wahrscheinlich zu schätzen.

Apropo Übersichtlichkeit: Wie würdest du es denn noch benutzerfreundlicher aufbauen?? Für gute Tipps bin ich immer offen.

Komisch das es bei dir nicht funktioniert, bei mir geht so weit alles.


Zum Beitrag von jakobwenzel:
Danke für die Erläuterung zum Thema speichern. Theorie hab ich soweit verstanden, aber wie setzt man das in die Praxis um?


Ja, BasicMan33, das kann sein. Wüsste aber überhaupt nicht, wie ich das abstellen kann (das mit dem Task der weiterläuft)?


Merci adfontes, für den Tipp mit dem Code. Werd das gleich morgen oder so mal ausprobieren. Hab leider nicht mehr so viel Zeit, weil heut die Schule wieder angefangen hat :cry: .


Und zu guter letzt noch mal unser Lieblingsthema: die FARBE.
Ich hab wie schon mal gesagt mindestens eine Stunde an dem Programm gesessen, bis ich die Farbe hatte. Rot ist zu aggressiv, blau zu kalt, grün erinnert an AOK (DEVK, usw.), gelb geht überhaupt nicht, und rosa war dann echt zu schwul.

Anstatt die ganze Zeit die Farbe zu kritisieren, könnt ihr ja mal einen Vorschlag machen, welche besser wäre.

_________________
Habt bitte Geduld, bin nur eine Anfängerin...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 05.09.05 19:26 
Auch die GUI gehört zum Programm. Es kommt ja auch auf den äußeren Eindruck an. Und as könnte ich mir vorstellen, dass dein Lehrer da auch etwas schief gucken wird, wenn es so ein lia da sieht. Und glaubst du, der Hausmeisetr hat den gleichen Geschmack wie du? Wenn es nicht nur euin Programm für dich persönlich ist, dann nimm lieber was neutrales.

Zum Speichern: ja iszt dir denn nie beim Testen aufgefallen, dass alle Daten wieder weg sind, wenn es wwieder startest? So lange du die Daten nicht hardgecodet in deinem Quelltext stehen hast, wirst du nicht umhinkommen, die eingegebenen Daten permananet irgendwo auf der Festplatte zu speichern.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 05.09.05 20:02 
Zitat:

Mein 50-jähriger brilletragender Hausmeister weiß die Übersichtlichkeit wahrscheinlich zu schätzen.

übersichtlich würde ich net unbedingt sagen, weil für alles buttons zu nehmen ist net so schick, groupboxen wären auch noch gut und vielleicht tabsheets :wink:
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 05.09.05 20:06 
Zum Speichern:
Für dein Problem dürfte es gut funktionieren die Daten als normal lesbare Dateien abzuspeichern, wobei Lehrer, Abkürzung und Schlüssel durch ein Trennzeichen wie "|" ("AltGr" + "Größer/Kleiner - Als - Taste") getrennt werden. Also sähe eine Zeile ungefähr so aus:
ausblenden Quelltext
1:
Herr Meier|MR|Informatikraum					


Als erstes wird eine Variable benötigt, über die auf die Datei zugegriffen wird. Im Beispiel heißt sie Datei vom Typ Textfile. Über AssignFile kann man die Datei öffnen. Dabei muss einmal die Dateivariable angegeben werden, gefolgt von dem Dateinamen. Hier empfehlen sich auch wieder relative Pfade, damit das Programm auf allen Rechnern läuft. Danach muss die Datei entweder mit ReWrite oder mit Reset auf das Schreiben/Lesen vorbereitet werden. Beide Prozeduren erwarten die Datei als Parameter. Am End muss die Datei dann auch wieder geschlossen werden, bei geschriebenen Daten ist das besonders wichtig, da sie sonst nicht gespeichert werden.
Das Eigentliche Lesen bzw. Schreiben geschieht über die Prozeduren ReadLn und WriteLn. Beide erwarten als ersten Parameter die Dateivariable. Als zweiten Parameter erwartet WriteLn den zu schreibenden Text, ReadLn muss als zweiter Parameter eine String-Variable übergeben werden, in die die Daten gelesen werden. Mit EOF prüft man, ob sich noch weitere zu lesende Daten in der Datei befinden. EOF gibt einen Boolean-Wert zurück. Wenn der Wert true ist, dann ist das Dateiende erreicht.
Die Daten müssen beim Speichern einfach alle nacheinander an die Prozedur WriteLn übergeben werden. Beim laden ist zu beachten, dass die einzelnen Abschnitte der Zeile unteerschiedlich lang sein können. Zum trennen der Zeile hier ein Beispiel:

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:
procedure TForm1.ReadFromFile;
var
  i:Integer //Zählervariable
  lehrer,abkuerzung,schluessel:String//Stringvariablen für die Zeilenteile
  zeile:String;//Ganze Zeile
  abschnitt:Integer;  /0 bei Lehrer, 1 bei Abkürzung, 2 bei Schlüssel
begin
  [...] //Datei öffnen,...
  while not EOF(Datei) do begin //Solange nicht EOF
    ReadLn(datei,zeile);
    abschnitt:=0;
    lehrer:='';
    abkuerzung:='';
    schluessel:='';
    for i:=1 to Length(zeile) do begin
      if zeile[i]='|' then Inc(Abschnitt)  //Falls Abschnittsseparator
      else begin
        if Abschnitt=0 then lehrer:=lehrer+zeile[i] else
         if Abschnitt=1 then abkuerzung:=abkuerzung+zeile[i] else
          schluessel:=schluessel+zeile[i];
      end;
    end;
    //Hier müssen dann die Inhalte der Variablen lehrer, abkuerzung und schluessel in den Feldern gespeichert werden.
  end;
  [...] //Datei schließen, ...
end;


Anstatt des Kommentars "Hier müssen dann..." muss dann der Code geschrieben werden, um die Daten in deinen Variablen wie beim Eingeben abzuspeichern.

P.S.:Ich verwende keine Streams, weil ich mit denen einfach nicht klarkomme (vielleicht liegt es daran, dass ich mit Turbo Pascal angefangen habe :lol: )

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.