Einzelnen Beitrag anzeigen

stiftII

Registriert seit: 2. Sep 2009
Ort: Cuxhaven
122 Beiträge
 
#12

AW: Auf "überliegende" Klasse zugreifen ?

  Alt 30. Aug 2014, 19:21
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.
  Mit Zitat antworten Zitat