[erledigt] Objekt als Property zuweisen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

[erledigt] Objekt als Property zuweisen

Beitrag von charlytango »

Hi,

ich komm nicht dahinter wie man ein Objekt sauber einem anderen als property zuweist.
Dazu muss ich etwas ausholen:

1.) TdmSettings_parent (enthält alle applikationsweiten Einstellungen samt Prozeduren zum Lesen und Schreiben)

2.) TdmSettings - abgleitet von TdmSettings_parent (enthält je nach Applikation Programmspezifische Einstellungen)

nun soll z.B. ein INI File eingelesen werden.

Alle nötigen Funktionen dazu möchte ich in eine Klasse (TSettingsManageIni) packen die ich bei Bedarf aufrufe.
Diese Klasse soll die eingelesenen Daten je nach Programm oder Verwendungszweck in ein Objekt vom Typ TdmSettings_parent oder TdmSettings schreiben.

meine naive Idee war dass ich der Klasse TINIManager ein Property verpasse

Code: Alles auswählen

 //in TdmSettings_parent sind alle nötigen Funktionen -- die je nach Programm abgeleitete TdmSettings
 property poSettings:TdmSettings_parent Read FoSettings;


und das Ziel der Schreibaktion samt den nötigen Funktionen dazu übergebe.


Code: Alles auswählen

//irgendwo im Code
dmSet := TdmSettings.Create;
 
 
 
function TForm1.readfromini: boolean;
var
  o:TSettingsManageIni;
begin
  result:=true;
  o:=TSettingsManageIni.Create;
  try
    //o.poSettings := dmSet;  //geht logischerweise nicht weil poSettings TdmSettings_parent erwartet     
    o.poSettings := (dmSet As TdmSettings_parent)// Error: No member is provided to access property
    //o.poSettings.Assign(dmSet As TdmSettings_parent);  //erzeugt einen EConvertError
 
    o.ReadFromIni; //Lesevorgang starten der auch die Ergebnisse schreibt
 
  finally
    freeandnil(o);
  end;
end;       


Wie mache ich das sauber? Oder bin ich da ganz auf dem Holzweg ?
Zuletzt geändert von charlytango am So 1. Okt 2017, 13:52, insgesamt 2-mal geändert.

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Objekt als Property zuweisen

Beitrag von Soner »

Du hast schon richtig gemacht nur write bei Property vergessen:
poSettings:TdmSettings_parent Read FoSettings WRITE FoSettings;

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Objekt als Property zuweisen

Beitrag von charlytango »

mahhhhh......

danke fürs Kopf zurechtrücken -- so blöd kann man eigentlich nicht sein dass man den Wald vor lauter Bäumen nicht sieht

case closed

Antworten