Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Properties - als Getter ein Function mit Parameter aufrufen (https://www.delphipraxis.net/151502-properties-als-getter-ein-function-mit-parameter-aufrufen.html)

c20c 20. Mai 2010 12:09


Properties - als Getter ein Function mit Parameter aufrufen
 
Hallöchen,

ich hatte folgende Idee, um nicht "tausende" Getter (bzw Setter) schreiben zu müssen:

Code:
type
  tHeader = class
    private
    type
      pword = ^word;
      tPart = (p_dsize,p_func0,p_func1,p_error,p_value,p_msgid);
    var
      bytes: array[0..11] of byte;
      function getPart(Part: tPart): Word;
    public
      property Dsize: Word read getPart(p_dsize);     // Hier möchte ich einen FESTEN Wert übergeben (siehe tPart)
      property Func0: Word read getPart(p_func0);
      ...
  end;

...

function tHeader.getPart(Part: tPart): Word;
var
  pvalue: pword;
begin
case Part of
  p_dsize: pvalue:=@bytes[0];
  p_func0: pvalue:=@bytes[2];
  p_func1: pvalue:=@bytes[4];
  p_error: pvalue:=@bytes[6];
  p_value: pvalue:=@bytes[8];
  p_msgid: pvalue:=@bytes[10];
end;
result:=pvalue^;
end;
Jedoch mag das ja der Compiler nicht. Gibt es da vielleicht einen Trick?
Es geht mir jetzt weniger um das konkrete Beispiel, sondern mehr um das prinzipielle.

Ich habe meine Idee mit den Zeigern deswegen auch noch nicht testen und garantiere für nichts.
Aber das ist evt. ein anderes Thema (BE oder LE)


Vielen Dank im vorraus!

Und eine Bemerkung zwischendurch: Das DelphiPraxisForum ist klasse. Danke an Alle, die so aktiv sind.

Uwe Raabe 20. Mai 2010 12:12

Re: Properties - als Getter ein Procedure mit Parameter aufr
 
Fast:

Delphi-Quellcode:
property Dsize: Word index p_dsize read getPart;
property Func0: Word index p_func0 read getPart;

c20c 20. Mai 2010 12:13

Re: Properties - als Getter ein Function mit Parameter aufru
 
Ah danke da wird mir einiges klar ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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