Thema: class

Einzelnen Beitrag anzeigen

Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

class

  Alt 20. Jan 2009, 20:02
Ich habe wiedereinmal ein Problem mit einer Klasse.
Aufgebaut ist die so:
Delphi-Quellcode:
unit usys;

{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils;

type

{ Tsys }

  TTraymenue= record
    FFEinfachesuche:Boolean;
    FFErweitertesuche:Boolean;
    FFEinstellungen:Boolean;
    FFSchuelereinwahl:Boolean;
  end;

  TSuche= record
    FFSuchanzeige:string[100];
    FFMAX_Suchbegr:integer;
  end;

  TTray= record
    FFTrayanzeigen:Boolean;
    FFTrayopen:Boolean;
    Menue:TTraymenue
  end;

  TSpeicher= record
    Suche:TSuche;
    Tray:TTray;
  end;
  TStr100=string[100];

  Tsys =class
     private
       FSuchanzeige:string[100];
       FMAX_Suchbegr:integer;
       FTrayanzeigen:boolean;
       FTrayopen: boolean;
       FEinfachesuche: boolean;
       FEinstellungen: boolean;
       FErweiterteSuche: boolean;
       FSchuelereinwahl: boolean;
       procedure SetEinfachesuche(const AValue: boolean);
       procedure SetEinstellungen(const AValue: boolean);
       procedure SetErweiterteSuche(const AValue: boolean);
       procedure SetMAX_Suchbegriffe(const AValue: integer);
       procedure SetSchuelereinwahl(const AValue: boolean);
       procedure SetSuchanzeige(const AValue: Tstr100);
       procedure SetTrayanzeigen(const AValue: boolean);
       procedure SetTrayopen(const AValue: boolean);
     public
       constructor Create;
       procedure saveSettings;
     published
       property MAX_Suchbegriffe:integer read FMAX_Suchbegr write SetMAX_Suchbegriffe ;
       property Suchanzeige:Tstr100 read FSuchanzeige write SetSuchanzeige;
       property Trayanzeigen:boolean read FTrayanzeigen write SetTrayanzeigen;
       property Trayopen:boolean read FTrayopen write SetTrayopen;
       property Einfachesuche:boolean read FEinfachesuche write SetEinfachesuche;
       property ErweiterteSuche:boolean read FErweiterteSuche write SetErweiterteSuche;
       property Einstellungen:boolean read FEinstellungen write SetEinstellungen;
       property Schuelereinwahl:boolean read FSchuelereinwahl write SetSchuelereinwahl;
      end;


implementation

{ Tsys }

procedure Tsys.SetMAX_Suchbegriffe(const AValue: integer);
begin
  if FMAX_Suchbegr=AValue then exit;
  FMAX_Suchbegr:=AValue;
end;
//...
constructor Tsys.Create;
var F: file of TSpeicher;
    X: TSpeicher;
begin
  try
    try
      Assignfile(F,ExtractFilePath(paramstr(0))+'Data'+pathdelim+'sys.bve');
      Reset(F);
      Read(F,X);
    except
      raise Exception.Create('Die Classe "TSys" konnte nicht Erstellt werden...');
    end;
  finally
    Closefile(F);
  end;
  try
    FSchuelereinwahl:=X.Tray.Menue.FFSchuelereinwahl;
    FEinstellungen:=X.Tray.Menue.FFEinstellungen;
    FErweitertesuche:=X.Tray.Menue.FFErweitertesuche;
    FEinfachesuche:=X.Tray.Menue.FFEinfachesuche;
    FTrayopen:=X.Tray.FFTrayopen;
    FTrayanzeigen:=X.Tray.FFTrayanzeigen;
    FMAX_Suchbegr:=X.Suche.FFMAX_Suchbegr;
    FSuchanzeige:=X.Suche.FFSuchanzeige;
  except
    raise Exception.Create('Zuweisung bei class TSys funktionierte nicht in Create.');
  end;
end;
aufgerufen wird die so:
Delphi-Quellcode:
 
var sys:Tsys;
//...
 sys.Create;
  Showmessage(inttostr(sys.MAX_Suchbegriffe));
jetzt bekomme ich aber bei dem Showmessage eine Fehlermeldung:
Zitat von Lazarus:
Project raised exception class 'External: SIGSEGV'.
Was mach ich falsch?
Wenn ich das richtig versteh, meint der ich hab die nicht richtig erzeugt...

gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat