Verweis: | Rewrite CloseFile |
Uses: | SysUtils |
Eingabe: | TDatei: Dateityp,DateiName: string |
Ausgabe: | Nichts |
Funktion: | Eine Datei mit Ihrem Pfad und Namen wird mit dem Variablen-Namen verknüpft. |
Beispiel 1
Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie einen TButton auf die Form. Doppelklicken sie auf den Button und ersetzen Sie das Ereignis durch folgenden Quelltext:
procedure TForm1.Button1Click(Sender: TObject);
//Bitte Speicher Sie Ihr Projekt vor Ausführung ab!
var
DateiName: string;
TDatei: TextFile;
begin
DateiName := 'Mein Text.txt';
// Verbinde den Namen in DateiName mit der Textdatei
AssignFile(TDatei, DateiName);
// Versuche folgende Zeilen.
try
// Erstelle eine Datei
rewrite(TDatei);
// Schreibe in die Datei
writeln(TDatei,
'Dies ist die erste Zeile meines Digitalen Tagebuchs.');
writeln(TDatei, 'Tag ', 1,
'-Ich schreibe Das Tagebuch nur für mich.');
writeln(TDatei, 'Tag ', 2,
'-Heute überlege ich mein Tagebuch bei Facebook zu posten.');
// Schließe die Datei
CloseFile(TDatei);
except
// Bei einem Fehler mach das.
on E: EInOutError do
begin
ShowMessage('Folgender Fehler hat sich ergeben.Klasse: ' +
E.ClassName + 'Fehlername: ' + E.Message);
exit;
end;
end;
//Wenn alles okay ist zeige diese Massage
ShowMessage('Datei ' + DateiName +
' ist erfolgreich erstellt worden');
end;
Diese Funktion verbindet eine Datei mit einem Dateinamen. Genauer gesagt wird der Datei eine Nummer zugewiesen (dem Handle) um dann Anhand der Nummer die Datei zu identifizieren. Der Name der Datei ist nur für uns Menschen gedacht. Dabei haben wir hier in dem Beispiel einen Namen mit einer Textdatei verbunden. Es gibt verschiedene Dateitypen. In erster Linie Typisierte und Untypisierte Dateien. Unsere Textdatei ist eine Typisierte-Datei. Dadurch können wir diese mit Write behandeln.Jetzt zum Beispiel.Bitte speichern sie vor dem Kompilieren Ihr Projekt ab. Auch wenn Sie in Lazarus nicht speichern, so wird der Kompiler doch irgendwo bei Ihnen auf dem Rechen etwas Speichern bevor er Kompiliert. Sonst funktioniert das mit Lazarus nicht. Er speichert also in Einer Temporären Datei. Normalerweise kein Thema, aber hier erzeugen wir eine zusätzliche Datei. In dem Verzeichnis der Applikation. Also dem Ort Ihrer Projekt-Datei. Und die ist jetzt Ihr Temp-ordner. Wenn sie Ihr Projekt in einem Verzeichnis speichern, dann wissen sie wo es ist. Wenn Sie es nicht mehr brauchen, dann können sie es rückstandsfrei löschen. Ihre Datei ist dann auch weg. Im Temp-Ordner werden bei einer Kompilierung eines anderen Programms die Standard-Namen überschrieben aber nicht Ihre Text-Datei gelöscht. Der Dateiname wird nun mit der TDatei verknüpft. Dabei muss der Name nicht unbedingt eine TXT-Endung haben. Das benötigen Sie nur um die Datei durch eine Verknüpfung mit einem Standard-Programm öffnen zu können. Die Struktur der Datei wird durch den Typ „TextFile“ festgelegt. Das zu wissen ist wichtig. Sie können diese Festlegung nur bei geschlossener und unbenutzter Datei vornehmen. Folgende Schritte müssen eingehalten werden. Variblen deklarieren und somit im Speicher bereitstellen, Dateiname beschriften.(ohne geht auch ist aber eine Standard io) Danach, Dateinamen mit dem Typ verbinden. (AssignFile) dann Datei öffnen , Datei mit Text füllen. Datei schließen. Damit wird nicht nur die Datei geschlossen sondern auch die Ressourcen freigegeben. Früher wurde der Befehl Assign benutzt benutzen Sie heute besser AssignFile, weil es sonst zu Gültigkeitsbereichskonflikten kommt. Was Sie wissen nicht was Gültigkeitsbereichskonflikte sind ? Dann ändern Sie mal die Variable „DateiName“ im Beispiel in „Text“ um. Mal abgesehen davon, dass Sie alle Vorkommen von „DateiName“ in „Text“ ändern müssten, gibt es zusätzlich noch diese Fehlermeldung.
unit1.pas(36,3) Error: Duplicate identifier "Text"
und weiter
unit1.pas(36,3) Hint: Identifier already defined in unit CONTROLS at line 1489
Typischer Fall von Gültigkeitsbereichskonflikt. 🙂 Will heißen, das es in der Unit „Controls“ in der Zeile 1489 bereits einen Bezeichner mit dem Namen „Text“ gibt. Okay sie haben das nicht geschrieben, aber Sie benutzen es. Und das ist der entscheidende Punkt. Beim Programmieren gibt es keine Schuldfrage. Nur „geht“ oder „geht nicht“. Deswegen macht mir das Programmieren spaß.