| Autor |
Beitrag |
cumberdale
Hält's aus hier
Beiträge: 2
|
Verfasst: Sa 06.06.09 19:15
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:
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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Sa 06.06.09 19:38
Laut einem Beitrag in der DP lässt sich das Problem mit einem Simplen Et-Zeichen (&) vor File lösen.
Delphi-Quelltext
Ob das wirklich funktioniert, musst Du nun testen. 
|
|
cumberdale 
Hält's aus hier
Beiträge: 2
|
Verfasst: Sa 06.06.09 19:44
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Sa 06.06.09 19:58
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|