Autor Beitrag
cumberdale
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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:
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:
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: 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.
ausblenden Delphi-Quelltext
1:
&File of ...					

Ob das wirklich funktioniert, musst Du nun testen. :nixweiss:
cumberdale Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 06.06.09 19:44 
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Laut einem Beitrag in der DP lässt sich das Problem mit einem Simplen Et-Zeichen (&) vor File lösen.
ausblenden Delphi-Quelltext
1:
&File of ...					

Ob das wirklich funktioniert, musst Du nun testen. :nixweiss:
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
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Sa 06.06.09 19:58 
user profile iconcumberdale hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Ob das wirklich funktioniert, musst Du nun testen. :nixweiss:
mmh, klappt leider auch nicht :(

Seh gerade, das bezog sich auf Delphi .NET (was es schon gar nicht mehr gibt). :oops:
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 06.06.09 20:26 
Also ich sehe gerade, dass Du die Variable dat an der falschen Stelle deklariert hast:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 06.06.09 20:31 
user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
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.