Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - 'file of' Deklaration klappt nicht
cumberdale - Sa 06.06.09 19:15
Titel: 'file of' Deklaration klappt nicht
Hallo, ich hoffe ich bin hier richtig ;)
Hab nach gut 2 Jahren wieder meine alten Delphi Dateien rausgekramt, die wir in der Schule mal gemacht haben. Wir hatten damals delphi 2005 (oder schon 2007?) und mein Turbo Delphi hat anscheinend Probleme mit ein paar Befehlen.
Also die Datei sollte einen Text, den man in ein editfeld schreibt speichern und anschließend manuell abgerufen werden können.
Das ganze sieht dann so aus:
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: 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:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls;
type TForm2 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Edit3: TEdit; Button2: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end; var Form2: TForm2; implementation
{$R *.nfm}
type tinfo = integer; tdat = file of tinfo;
var dat : tdat;
procedure speichern (var info:tinfo); begin assignfile(dat,'Liste.dat'); reset(dat); write(dat,info); closefile(dat); end;
procedure laden (var info:tinfo); begin assignfile(dat,'Liste.dat'); reset(dat); read(dat,info); closefile(dat); end;
procedure speichern_klick; var info : tinfo; begin info := strtoint(form2.edit3.text); speichern(info); end;
procedure laden_klick; var info : tinfo; begin laden(info); form2.label1.caption := inttostr(info); end;
procedure TForm2.Button2Click(Sender: TObject); begin speichern_klick; end;
end. |
(die anderen edit felder & buttons hab ich mal rausgelassen, da irrelevant. zudem gibts noch keinen button zum laden)
Jedoch kommt, wenn ich das Programm starten möchte, eine Fehlermeldung bei der Deklaration "tdat = file of tinfo;":
[Pascal Fehler] Unit2.pas(34): E1025 Sprach-Feature wird nicht unterstützt: 'typisierte oder untypisierte Datei'
Hab ich einen Fehler gemacht oder liegt das an Turbo Delphi? Wenn ja wie kann ich das Problem umgehen?
BenBE - Sa 06.06.09 19:35
Würde das spontan mal auf TurboDelphi schieben, weil das syntaktisch korrekt ist, wenn auch extrem veraltet. Schau Dir lieber einmal die Klasse TStream und ihre Nachfahren an. Interessant ist hier z.B. die Klasse TStringStream sowie TFileStream.
cumberdale - Sa 06.06.09 19:44
mmh, klappt leider auch nicht :(
| Zitat: |
| Schau Dir lieber einmal die Klasse TStream und ihre Nachfahren an. Interessant ist hier z.B. die Klasse TStringStream sowie TFileStream. |
ok danke, werd ich machen. Ich denke mal, dass es so veraltet ist, liegt hauptsächlich an unseren ehemaligen Informatiklehrer :p
ffgorcky - Sa 06.06.09 20:26
Also ich sehe gerade, dass Du die Variable
dat an der falschen Stelle deklariert hast:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| end; var Form2: TForm2; implementation
{$R *.nfm}
type tinfo = integer; tdat = file of tinfo;
var dat : tdat;
|
die müsstest Du doch einfach direkt unter Deine Form2-Definition setzen!
- Und dann brauchst Du da auch kein
var mehr extra vorschreiben!
BenBE - Sa 06.06.09 20:31
ffgorcky hat folgendes geschrieben : |
Also ich sehe gerade, dass Du die Variable dat an der falschen Stelle deklariert hast:
[...]
die müsstest Du doch einfach direkt unter Deine Form2-Definition setzen!
- Und dann brauchst Du da auch kein var mehr extra vorschreiben! |
Falsch! Die ist dort total korrekt, da sie im
Interface-Teil global sichtbar ist, unterhalb von
Implementation jedoch nur für die eigene Unit. Von daher ist das so schon durchaus korrekt und gegenüber der von Dir vorgeschlagenen Version sogar vorzuziehen (wenn man es schon unbedingt mit globalen Variablen machen möchte).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!