Voraussetzungen:
Ziele:
Übungsaufgabe:
Ein Programm soll erstellt werden, mit dem verschiedene Textdateien editiert und gespeichert werden können. Aus je einer Textdatei mit Adjektiva, Substantive, Verba und Ergänzungen sollen mit Hilfe von Zufallszahlen einfache Sätze in "Gedichtform" gebildet und ausgegeben werden. Diese Gedichte sollen als Textdatei gespeichert und allenfalls ausgedruckt werden können. Der Programmablauf soll ausschließlich über Menü-Befehle anstelle von Buttons gesteuert werden.
Mögliche Erweiterungen: Fehlerbehandlung, Messageboxen, Hilfedatei, "Speichern unter...", Dateiliste, kompliziertere Gedichte erstellen (Unterscheiden maskulin-feminin-neutrum, allenfalls auch Nebensätze)...
Mit Dialogen werden typische Schnittstellen zwischen Computer(-Programm) und Benutzer hergestellt. Entsprechend der Windows-API stehen hier bestimmte Fenster zur Verfügung, die aus der Komponentenpalette mittels der "Karteikarte Dialoge" ausgewählt werden können:
Sobald ein Dialog aus der Palette in das aktuelle Formular gezogen wurde, stehen er und seine Komponenten (etwa über den Objektinspektor) zur Verfügung.
Die Dialoge werden durch die Execute-Methode aufgerufen, die i.A. einen Wahrheitswert
(aufgerufen oder nicht aufgerufen) zurückgibt. Anschließend können bestimmte
Komponenten und Eigenschaften des aufgerufenen Dialogs übernommen werden.
procedureTform1.Speichern1.CLick(Sender:TObject); begin if SaveDialog1.Execute then begin Memo1.Lines.SaveToFile(SaveDialog1.FileName); end; end;
Im obigen Beispiel ist nach dem Öffnen des "Speichern-Dialoges" (SaveDialog1.Execute = wahr) der Name der ausgewählten Datei in der Variablen (Komponente)
SaveDialog1.FileName
enthalten.
Unabhängig von den Dialogen zum Lesen oder Speichern von Dateien, können Dateien (wie in Pascal) direkt vom Programm heraus gelesen oder geschrieben werden. In diesem Abschnitt wollen wir nur Texte, also hintereinander geügte Textzeilen speichern. Wir verwenden dazu den Dateityp TextFile. Textdateien sind zeichen- und zeilenweise organisiert: Jede Zeile wird durch die ASCII-Zeichen 13 ($0D, Wagerrücklauf) und 10 ($0A, Zeilenvorschub) abgeschlossen(1). Die Länge der Zeile wird durch die Position dieser Zeilenendzeichen bestimmt.
Die folgenden Pascal-Befehle dienen zum Öffnen, Lesen und Schließen von Textdateien (beachte, dass nur eine Auswahl von Befehlen angegeben ist - ONLINE-Hilfe):
AssignFile |
Verknüpft eine Dateivariable mit einer Datei. |
Reset |
Öffnet eine vorhandene Datei. |
CloseFile |
Schließt die geöffnete Datei und hebt die Zuordnung einer Datei mit einer Dateivariablen wieder auf. |
Append |
Öffnet eine Textdatei zum Anfügen weiterer Zeichen. |
Readln |
Liest eine Zeile aus einer Textdatei. |
Writeln |
Schreibt eine Zeile in eine Textdatei. |
Eof |
Prüft, ob das Dateiende erreicht ist. |
Der nächste Programmausschnitt zeigt beispielshaft die Verwendung der oben dargestellten
Befehle: Eine Textdatei wird geöffnet, der Inhalt in ein Array mit dem Namen "Wortfeld"
eingelesen und die Anzahl der enthaltenen Zeilen in die Variable "anzahl" übernommen.
procedure lese (dateiname:name; var feld:wortfeld; var anzahl:integer); var i:integer; datei:textfile; begin assignFile(datei,dateiname); reset(datei); i:=1; while not eof(datei) do begin readln(datei,feld[i]); inc(i); end; anzahl:=i-1; closeFile(datei); end;
1.Von der Standard-Karteikarte der Komponentenpalette wird eine Hauptmenü- oder Popup-Menü-Komponente in das aktuelle Formular gezogen.
2.Mit einem Doppelklick auf diese Komponente wird das Fenster des Menü-Designers aufgerufen.
3.Das Menü wird definiert, indem die Befehle in die entsprechenden Stellen des Menüs eingefügt werden (eine horizontale Linie entsteht durch die Eingabe des Bindesstriches). Beachte den Objektinspektor und die Eigenschaften jeder Menü-Komponente!
4.Um den Menü-Befehlen entsprechende Prozeduren zuzuordnen, gelant man mit einem Doppelklick auf den Menüeintrag im Quelltext-Editor. Wie bei Buttons braucht man jetzt nur mehr den entsprechenden Code zwischen die begin und end Anweisung zu setzen.
5.Eine interessante Eigenschaft der Menüeinträge ist die Eigenschaft Checked. Wird diese
Eigenschaft auf truegesetzt, so erscheint neben dem Menüeintrag ein Häkchen. Weiters kann
diese Eigenschaft im gesamten Delphi-Programm abgefragt werden...
1.