Einzelnen Beitrag anzeigen

ghost1601

Registriert seit: 26. Aug 2006
64 Beiträge
 
Delphi 2005 Personal
 
#1

Datenbank mit Fehler in Read Anweisung

  Alt 9. Dez 2006, 21:44
Hi Leutz,

ich wollte mich mal ranmachen und für meinen Clan eine Datenbank in Form eines Delphiprogrammes erstellen.
Hat im Prinzip auch ganz gut geklappt bis ich dann irgendwann das Programm ausführen wollte und einen Fehler bekam...mitlerweile steh ich kurz vor dem Verzweifeln.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Datei1: TMenuItem;
    ffnen1: TMenuItem;
    speichern2: TMenuItem;
    beenden1: TMenuItem;
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    Edit6: TEdit;
    Label6: TLabel;
    ComboBox1: TComboBox;
    Label7: TLabel;
    Memo1: TMemo;
    Label8: TLabel;
    StatusBar1: TStatusBar;
    Button1: TButton;
    Button2: TButton;
    procedure beenden1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure speichern2Click(Sender: TObject);
    procedure ffnen1Click(Sender: TObject);
  private
    procedure ArrayinMaske;
    procedure MaskeinArray;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
type tdaten=record
      clanname:string;
      clankürzel:string;
      homepage:string;
      spiel:string;
      kontaktname:string;
      icq:integer;
      msn:string;
      kommentar:string;
end;

const max=100;

var p:integer;
    daten:tdaten;
    datenfeld:array[1..max]of tdaten;
    datendatei:textfile;
{$R *.dfm}

procedure TForm1.ArrayinMaske;
begin
  daten:=datenfeld[p];
  edit1.text:=daten.clanname;
  edit2.text:=daten.clankürzel;
  edit6.text:=daten.homepage;
  combobox1.text:=daten.spiel;
  edit3.text:=daten.kontaktname;
  edit4.Text:=inttostr(daten.icq);
  edit5.Text:=daten.msn;
  memo1.Text:=daten.kommentar;
  statusbar1.panels[0].text:='Position: '+inttostr(p) + '/' + inttostr(max);
  daten:=datenfeld[p];
  end;
procedure TForm1.MaskeinArray;
begin
   daten.clanname:=edit1.text;
   daten.clankürzel:=edit2.text;
   daten.homepage:=edit6.text;
   daten.spiel:=combobox1.Text;
   daten.kontaktname:=edit3.text;
   daten.icq:=strtoint(edit4.text);
   daten.msn:=edit5.Text;
   daten.kommentar:=memo1.text;
   datenfeld[p]:=daten;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
MaskeinArray;
  if p<max then inc(p);
    ArrayinMaske;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MaskeinArray;
  if p>1 then dec(p);
    ArrayinMaske;
end;

procedure TForm1.ffnen1Click(Sender: TObject);
var zaehler:integer;
begin
maskeinarray;
if opendialog1.execute then
  begin
    assignfile(datendatei, opendialog1.filename);
    reset(datendatei);
        for zaehler:=1 to max do
          begin
            read(datendatei,daten); [b]---->Hier wird der Fehler angezeigt![/b]
            datenfeld[zaehler]:=daten; [b]---->[Fehler] Unit1.pas(125): E2055[/b]
          end; [b]---->Ungültiger Typ in[/b]
     closefile(datendatei) [b]---->Read/Readln-Anweisung[/b]
  end;
end;

procedure TForm1.speichern2Click(Sender: TObject);
var zaehler:integer;
begin
  MaskeinArray;
  if savedialog1.execute then
    begin
      assignfile(datendatei,savedialog1.filename);
      rewrite(datendatei);
      for zaehler:=1 to max do
        begin
          daten:=datenfeld[zaehler];
          write(datendatei,daten);
        end;
       closefile(datendatei)
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
p:=1;
arrayinmaske;
end;

procedure TForm1.beenden1Click(Sender: TObject);
begin
close;
end;

end.
hat irgendjemand eine idee was dort falsch sein kann?
Der Fehler wird in der markierten Zeile, bei daten angezeigt.
Thx
  Mit Zitat antworten Zitat