Hey danke für den Comment.
Ich benutze dafür CriticalSections. Wobei ich gelesen habe, dass es bei Lesezugriffen eigentlich keine Speicherverletzungen gibt.
Werds wohl jetzt so in etwa machen wie Dejan Vu beschrieben hat.
Allerdings schade, dass ich die andere Möglichkeit (Die ich zugegebenermaßen nicht ganz verstehe) nicht verwenden kann.
Programmcode sieht da so aus:
Falls mal jemand schauen mag warum das eine Zugriffsverletzung gibt.
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
TMainClass =
class;
TUseFulClass =
class
private
FMainClass: TMainClass;
public
function DoSomething:boolean;
end;
TMainClass =
class
usefulinfos:
string;
UsefulClass:TUsefulClass;
protected
constructor Create;
end;
var
Form1: TForm1;
MainClass:TMainClass;
implementation
{$R *.lfm}
{ TForm1 }
constructor TMainClass.Create;
begin
UsefulClass := TUseFulClass.Create;
//UsefulClass.FMainClass := TMainClass.Create; // Macht ja nicht so viel Sinn
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MainClass := TMainClass.Create;
MainClass.usefulinfos:= '
Very useful Infos';
Mainclass.usefulClass.DoSomething;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
function Tusefulclass.DoSomething:Boolean;
begin
//Access Violation
Form1.Caption:= fmainClass.usefulinfos;
end;
end.