ich bin noch etwas neu in der Lazarus und Pascal-Welt.
Ich teste grade ein wenig mit Klassen, Feldern und Eigenschaften herum.
Folgendes Problem, ich habe mir eine Test-Klasse angelegt, und in dieser ein Feld angelegt. Jetzt erstelle ich in einer Klasse B ein Objekt der Klasse A und möchte dann in Klasse B auf das Feld zugreifen. Hier kommt dann der SIGSEGV
Klasse A
Code: Alles auswählen
unit test;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
TTest = class
public
Value: integer;
constructor Create();
end;
implementation
constructor TTest.Create;
begin
inherited;
Value := 0;
end;
end.
Klasse B
Code: Alles auswählen
unit gui;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
test;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
t:TTest;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
t.Create();
ShowMessage(IntToStr(t.Value));
end;
end.
Ich weiß, das der SIGSEGV immer etwas damit zu tun hat, das ich auf etwas zugreifen möchte was nicht da ist. Aber das Feld Value ist ja "nur" ein integer, das heißt hier muss ich diesen ja nicht erst erstellen, bzw. ich initialisiere ihn anfangs auch mit einem Wert.
Was übersehe ich hier?
Vielen dank für eure HIlfe
Gruß