Einzelnen Beitrag anzeigen

thejacensolo

Registriert seit: 11. Jun 2013
Ort: Frankfurt am Main
13 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Eine lineare Liste an Strings als Datei speichern

  Alt 13. Nov 2013, 19:25
liste ist ein objekt der klasse Tliste

Delphi-Quellcode:
UNIT mTListe;

interface

//-------------------- ggf Uses-Liste anpassen ! --------------------
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, ComCtrls, Menus, mTVokabel;

type
  TListe = class

  public //Attribute
    Laenge : Integer;
    Erste : TVokabel;
     //Objektbeziehungen:
        // kenntTVokabel : TVokabel;

  public //Methoden
    constructor initList (E: String; D: string); virtual;
    procedure hinzufuegen (E: String; D: string); virtual;
    function abfragen (n: integer) : string; virtual;
    function Dabfragen (n: integer) : string; virtual;
    function zufallfragenE (n: integer) : string; virtual;
    function zufallfragenD (n: integer) : string; virtual;
    procedure loeschen(n: integer); virtual;
   end;

implementation

//+---------------------------------------------------------------------
//| TListe: Methodendefinition
//+---------------------------------------------------------------------

//-------- initList (public) -------------------------------------------
constructor TListe.initList (E: String; D: string);
var V: TVokabel;
begin
  Laenge := 1; //Liste enthaelt erstmal 1 Vokabel
  V := TVokabel.initVok(E,D); // Erzeuge mir eine Vokabel mit dem Wort Vok HIER PROBLEM
  Erste := V;
end;

//-------- hinzufuegen (public) ----------------------------------------
procedure TListe.hinzufuegen (E: String; D: string);
var aktVok, neueVok: TVokabel; i: Integer;
begin

  neueVok := TVokabel.initvok(E,D); //Erzeuge erstmal Vokabel
  // 1. Fall: Es gab bisher nur 1 Vokabel
  if Laenge = 1 then
  Erste.Naechste := neueVok
  else
  begin
    aktVok := Erste;
    for i := 1 to Laenge -1 do //Achtung
    begin
      aktVok := aktVok.Naechste // die neue Aktuelle ist die alte Naechste
    end;
    aktVok.Naechste := neueVok;
  end;
  inc(Laenge);
end;

//-------- abfragen (public) -------------------------------------------
function TListe.abfragen (n: integer) : string;
var i: integer; vokabel: Tvokabel;
begin
  Vokabel := Erste;
  //n := Random(t);
  for i:= 1 to n - 1 do
   begin
     Vokabel := vokabel.naechste;
   end;
   result := vokabel.englisch;
end;

function TListe.Dabfragen (n: integer) : string;
var i: integer; vokabel: Tvokabel;
begin
  Vokabel := Erste;
  //n := Random(t);
  for i:= 1 to n - 1 do
   begin
     Vokabel := vokabel.naechste;
   end;
   result := vokabel.Deutsch;
end;

function Tliste.zufallfragenD (n: integer) : string;
var i:integer; vokabel: Tvokabel;
  Begin
    vokabel := erste;
   for i := 1 to n - 1 do
    begin
      vokabel := vokabel.naechste;
    end;
   result := vokabel.englisch;
  end;

function Tliste.zufallfragenE (n: integer) : string;
var i:integer; vokabel : tvokabel;
  Begin
   vokabel := erste;
   for i := 1 to n - 1 do
    begin
      vokabel := vokabel.naechste;
    end;
   result := vokabel.deutsch;
  end;

procedure TListe.loeschen (n:integer); //FEHLER
 var i:integer; vokabel,vokabel2 : tvokabel;
  Begin
   vokabel := erste;
   for i := 1 to n - 2 do
    begin //naechte.naechste
      vokabel := vokabel.naechste;
    end;
   vokabel2 := vokabel.naechste;
   vokabel.naechste := vokabel.naechste.naechste;
   vokabel := vokabel2;
   vokabel.destroy;
  laenge := laenge - 1;
end;
  end.
Der Fehler ist Indetifier intends no memeber "savetofile"
  Mit Zitat antworten Zitat