Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TFDCommand : Überschreiben von Properties der Elternklasse (https://www.delphipraxis.net/208888-tfdcommand-ueberschreiben-von-properties-der-elternklasse.html)

bernhard_LA 25. Sep 2021 09:34

Datenbank: MSSQL • Version: 12 • Zugriff über: ADO

TFDCommand : Überschreiben von Properties der Elternklasse
 
unsere Anwendung wurde unter Windows und dem DB Framework ADO entwickelt, wir benötigen jetzt auch Support der Plattform UNIX, und dem DB Interface FireDAC.
Wir wollen deshalb beide DB Interfaces über Compiler Switches unterstützen aber nur eine Code Variante bereitstellen/pflegen/weiterentwickeln .....
Wir haben deshalb eine "Vermittler Klasse " eingeführt, die entweder von TAdoCommand oder TFDCommand erbt.


unit FireDAC.Comp.Client;


Delphi-Quellcode:

  TFlexCommand = class(TFDCommand)
  private
    procedure SetCommandText(const Value: string);

  public

    property CommandText : string write SetCommandText;
  end;



procedure TFlexCommand.SetCommandText(const Value: string);
var tempLst : TStringList;
begin
    tempLst := TStringList.Create;
    try
        tempLst.CommaText := Value;

       //  Self.SetCommandTextStrs (tempLst);  (1)

      //   FCommandText.SetStrings(tempLst)   (2)

    finally
         tempLst.Free
    end;

end;
CommandText ist bei ADO ein String bei Firedac eine Stringliste.
Ich will jetzt die Property CommandText ind meiner neuen Klasse als als String haben und dann als Stringliste an die Eltern-Klasse TFDCommand übergeben,
meine beiden Versuche (1) und (2) lassen sich aber leider nicht compilieren, welchen Fehler mache ich ?

Fritzew 25. Sep 2021 18:05

AW: TFDCommand : Überschreiben von Properties der Elternklasse
 
Da der Setter private ist greife auf das geerbte property zu:

Delphi-Quellcode:
procedure TFlexCommand.SetCommandText(const Value: string);
var
  tempLst: TStringList;
begin
  tempLst := TStringList.Create;
  try
    tempLst.CommaText := Value;
     // Self.SetCommandTextStrs (tempLst); (1)
     inherited CommandText := tempLst; //(1)

    // FCommandText.SetStrings(tempLst) (2)

  finally
    tempLst.Free
  end;

end;

Ich würde auch die Verebung von TFDCustomCommand machen also:

Delphi-Quellcode:
  TFlexCommand = class(TFDCustomCommand)
  private
    procedure SetCommandText(const Value: string);
  public
    property CommandText: string write SetCommandText;
  end;
So kannst Du besser festlegen was als published deklariert wird


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz