Einzelnen Beitrag anzeigen

mabstudent

Registriert seit: 13. Nov 2010
23 Beiträge
 
#12

AW: Textdatei in Record Muster überführen

  Alt 13. Jan 2013, 10:31
Danke für eure Hilfe, ich glaube ich bin jetzt sehr nah dran. Ich kann die Anwendung zumindest fehlerfrei starten. Betätige ich allerdings den Button1 erhalte ich folgende Fehlermeldung:

Projekt project1 hat Exception-Klasse >RunError(100)< ausgelöst.
In Zeile 76, dies wäre hier:

Code:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type
  Tsprueche=record
    spruch:string[200];
    autor:string[50];
  end;

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  datei: file of Tsprueche;


implementation

{$R *.lfm}

{ TForm1 }

procedure txttodb(uebergabe:string);
var s:Tsprueche;  //variable für datei:file of Tsprueche
    spruch:string; //das was vorm ; steht
    autor:string;    //das was nach ; steht
    posi:integer; //position im string
    f:textfile;    //var für den textfile quelle.txt
    datei:file of Tsprueche; //var für den data base file ziel.db
begin
assignfile(f,'quelle.txt');  //Eingabe öffnen
reset(f);
assignfile(datei,'ziel.db');    //Ausgabe öffnen
rewrite(datei);
posi:=0;
while not eof(f) do
  begin
  readln(f,uebergabe);   //liest in f und schreibt in den string uebergabe
  posi:=pos(';',uebergabe); //Position von ; in uebergabe
  s.spruch:=copy(uebergabe,1,posi-1);    //das vorm ;
  s.autor:=copy(uebergabe, posi+ 1, MAXINT);   //nach ;
  write(datei,s);
  end;
closefile(f);
closefile(datei);
end;

procedure readRandomDataset(fileName: TFilename; var dataSet: TSprueche);
var
  datei : file of TSprueche;
  idx : longInt;
begin
  assignFile(datei,'ziel.db');
  if FileExists('ziel.db')
  then ReSet(datei)
  else ReWrite(datei);
  idx := random(sizeOf(datei));
  seek(datei,idx);
  read(datei,dataSet);
 [COLOR="Red"] closefile(datei); [/COLOR] *//Zeile 76: hier hab ich den RunError
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  dataSet : TSprueche;
  spruch, autor:string;
begin
  readRandomDataSet('ziel.db',dataSet);
  spruch:= dataSet.spruch;
  autor:= dataSet.autor;
  memo1.Lines.Add(spruch+'von'+autor);
end;
end.
  Mit Zitat antworten Zitat