Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

OOP wirklich nicht möglich?

  Alt 12. Okt 2017, 14:56
Delphi-Version: XE8
Hi zusammen

Mit folgender Klasse speichere ich die von einem SQLStatement von MySQL zurückgegeben Daten zwischen:
Delphi-Quellcode:
type
  TQueryResultClass = Class(TPersistent)
  private
    FidBild: Integer;
    FThumbnail : TMemorystream;
    FBitmap: TMemorystream;
    FBildDescribeTabelle : TBildDescribeTabelle;
    FKategoryTabelle : TKategoryTabelle;
    FPass: String;
    FUser: String;
    procedure SetBitmap(Value: TMemoryStream);
    procedure SetThumbnail(Value: TMemoryStream);

    function GetBitmap: TMemoryStream;
    function GetThumbnail: TMemoryStream;
    function FillThumbnail(var Thumbnail: TMemoryStream): TMemoryStream;

  public
    constructor Create(AOwner: TComponent); //
    destructor Destroy; override;
    procedure Assign(Source:TPersistent); override;
    property IdBild :integer read FidBild write FidBild;
    property Thumbnail: TMemoryStream read GetThumbnail write SetThumbnail;
    property Bitmap: TMemoryStream read GetBitmap write SetBitmap;
    property BildDescribeTabelle : TBildDescribeTabelle read FBildDescribeTabelle write FBildDescribeTabelle;
    property KategoryTabelle : TKategoryTabelle read FKategoryTabelle write FKategoryTabelle;
  end;
Nun arbeite ich daran, die AnwendungsDB auf SQLite umzustellen. Leider (?) habe ich Kritik von hier wegen unsäglich langer Taellennamen befolgt und zu diesem Zweck ein neues Datenbankmodell, analog dem mit MySQL benützten, aber mit deutlich gekürzten Tabellennamen erstellt.
Das heisst, ich kann obige Klasse nicht verwenden, sondern muss eine neue, grundsätzlich gleich aufgebaute Klasse erstellen - ein e Anforderung an die Klasse ist, dass deren Felder und Propertys so heissen, wie die Tabellen, deren Inhalte sie übernehmen sollen. Allees andere gäbe früher oder später ein unentwirrbares Chaos.
Die neue, noch nicht fertig erstellte Klasse mit den neuen Tabellennamen:
Delphi-Quellcode:
type
  TCMQueryClass = Class(TPersistent)
  private
    FidBild: Integer; // FidBild: Integer;
    FThumbnail : TMemorystream; // FThumbnail : TMemorystream;
    FBitmap: TMemorystream; // FBitmap: TMemorystream;
    FTblBildText : TTblBildText; // FBildDescribeTabelle : TBildDescribeTabelle;
    FTblAlbum : TTbl_Album; // FKategoryTabelle : TKategoryTabelle;
    FPass: String; // FPass: String;
    FUser: String; // FUser: String;
    procedure SetBitmap(Value: TMemoryStream); // procedure SetBitmap(Value: TMemoryStream);
    procedure SetThumbnail(Value: TMemoryStream); // procedure SetThumbnail(Value: TMemoryStream);

    function GetBitmap: TMemoryStream;
    function GetThumbnail: TMemoryStream;
    function FillThumbnail(var Thumbnail: TMemoryStream): TMemoryStream;

  public
    constructor Create(AOwner: TComponent); // override;
    destructor Destroy; override;
    procedure Assign(Source:TPersistent); override;
    property IdBild :integer read FidBild write FidBild;
    property Thumbnail: TMemoryStream read GetThumbnail write SetThumbnail;
    property Bitmap: TMemoryStream read GetBitmap write SetBitmap;
    property TblBildText : TTblBildText read FTblBildText write FTblBildText;
    property TblAlbum : TTbl_Album read FTblAlbum write FTblAlbum;
  end;
Ich habe mir lange darüber Gedanken gemacht, wie man dieses Problem mit OOP-Miteln lösen könnte, aber bislang keine befriedigende Lösung gefunden.

Hat jemand einen Vorschlag?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat