[gelöst] Kreuzverweis zwischen mind 2 klassen.

Rund um die LCL und andere Komponenten
Antworten
Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

[gelöst] Kreuzverweis zwischen mind 2 klassen.

Beitrag von Maik81ftl »

Moin Moin,

Überlege schon, wie ich das bei meinem Derzeitigen Projekt so eleganz schreibe, das ich Klassenübergreifend zugreifen kann.

zur verdeutlichung mal in dieser reihenfolge.

Proggi bekommt die werte Name & Vorname, Klasse User verwaltet diese Normal. <<< Soweit alles OK!

nun das Große :?:. wie bringe ich einer klasse bei, welche erst dann den Creat bekommt, wenn ich die das erste mal lade auf die Klasse User inkl. aller Werte und co. zuzugreifen.

Habe an so eine ähnliche Lösung gedacht.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  User := TUser.Create;
  Benutzer.Name:= 'TesT';
  benutzer.Lastname:= 'TESTER';
  User.Reload:= Benutzer;
  Regel:= TRegel.Create;
{  StatusBar1.Panels.Items[0].Text:= Regel.FFilename;
  Grid.Cells[0, 0] := IntToStr(Regel.Year);
  for r := 1 to 12 do
      Grid.Cells[0, r] := MonthNames[r];}
  Timer1.Enabled:= True;
end;
Wie ihr hier seht brauche ich die Regel um einiges Später. will Ihr aber schon im Vorfeld indirekt wert zuweisen. bzw. die property User.Reload schon so nnutzen, das dieser nicht nur für die anwendung und den User die werte neuläd sondern auch gleich für die klasse regel vorbereitet.

Dazugesagt! der Type, welcer hier bei dem Reload verwendet wird ist fest in der Unit definiert, wo auch die klassen User und Regel geschrieben sind.

Der Lieblingsfehler tritt genau in diesem Contructor auf...

Code: Alles auswählen

constructor TRegel.Create;
begin
  inherited;
  FPath := ExtractFilePath(GetAppConfigFile(false));
  Fext := 'regel';
  _Benutzer:= Benutzer.Reload; // <--- Hier erscheint der Fehler "SIGSEGV"
  SetYear(YearOf(Date));
end;
Zuletzt geändert von Maik81ftl am Mi 6. Apr 2011, 20:20, insgesamt 1-mal geändert.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Kreuzverweis zwischen mind 2 klassen.

Beitrag von Maik81ftl »

Hmmm sehe auch grade, das ich einfach nur einen Aufruf noch nicht benodige. Der raus und weiter im Text?!

Thema Gelöst!
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Antworten