Hallo zusammen,
ich habe ein Problem bei einem Programm in Lazarus. Ich habe mal ein kleines Programm geschrieben, das nichts weiter macht als diesen Fehler zu reproduzieren. Hier mal der Quellcode:
Unit1
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, unit2; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private hTest : tUnit2; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin hTest.Zahl:=Edit1.text; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit2.text := htest.Zahl; end; end.
Unit2:
unit Unit2; {$mode objfpc}{$H+} interface uses Classes, SysUtils; type tUnit2 = class(TObject) private zZahl : string; procedure SchreibeZahl ( pZahl : string ); virtual; function liesZahl : string; virtual; public property Zahl : string read lieszahl write schreibezahl; end; implementation procedure tUnit2.SchreibeZahl (pZahl : string); begin zZahl := pZahl; end; function tUnit2.liesZahl : string; begin result := zZahl; end; end.
Der Fehler tritt auf, wenn man irgendwas in das obere Editfeld eingibt und dann auf Button1 oder 2 klickt. Wenn ich es in Lazarus öffne und ausführe kommt die Meldung
Projekt project1 hat Exception-Klasse »External: SIGSEGV« ausgelöst. In Datei 'unit1.pas' in Zeile 39: hTest.Zahl:=Edit1.text;
Wenn ich es kompiliere und es dann aus Nautilus heraus öffne lautet die Meldung:
Access violation. Press OK to ignore and risk data corruption. Press Cancel to kill the program.
Weiß jemand, wo der Fehler liegt?
Gruß maeries