Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array of Byte als Property (https://www.delphipraxis.net/132052-array-byte-als-property.html)

Helmi 5. Apr 2009 11:25


Array of Byte als Property
 
Hallo,

in meinem Projekt werden Forms die zur Einstellung oder auch zur Ausgabe von Informationen dienen mittels properties mit Daten versorgt.
Nun möchte ich eine Property aufbauen, der ein Array of Byte übergeben werden kann.
Nur leider bekomm ich vom Compiler folgende Meldung um die Ohren gehauen:
Zitat:

[Fehler] InfoUnit.pas(46): Published-Eigenschaft 'Eingabe_Array_IDS' kann nicht vom Typ ARRAY sein
Meine Unit ist so aufgebaut:

Delphi-Quellcode:
type
  TArray_IDS = Array[1..255] of Byte;

  TInfoForm = class(TForm)
{ ... }
  private
    { Private-Deklarationen }
    //Eingabe
    FEingabe_SPLChecksumme: String;
    FEingabe_Array_IDS   : TArray_IDS;

    //Ausgabe

    //intern
  public
    { Public-Deklarationen }
    function Execute: Boolean;
  published
    { Published-Deklarationen }

    //Eingabe
    property Eingabe_SPLCheckSumme: String write FEingabe_SPLChecksumme;
    property Eingabe_Array_IDS   : TArray_IDS write FEingabe_Array_IDS;
Wie kann ich ein Array als Property übergeben?
Falls es keine Lösung dafür gibt, gibts vielleicht eine andere Möglichkeit dazu?

Muetze1 5. Apr 2009 11:28

Re: Array of Byte als Property
 
Zitat:

Zitat von Helmi
Wie kann ich ein Array als Property übergeben?

Nein, wie der Compiler schon sagt:

Zitat:

[Fehler] InfoUnit.pas(46): Published-Eigenschaft 'Eingabe_Array_IDS' kann nicht vom Typ ARRAY sein

jaenicke 5. Apr 2009 11:31

Re: Array of Byte als Property
 
Da das Array ohnehin fest ist, könntest du eine Array-Property benutzen, bei der du die Eigenschaft selbst wie ein Array nutzt. Ob das sinnvoll ist in deinem Fall, weiß ich nicht.

Helmi 5. Apr 2009 11:33

Re: Array of Byte als Property
 
Was ich vorhab ist, maximal 256 Werte zu übergeben
(Ja im Quelltext oben steht 255 - Fehler von mir)

Gibts da eine andere Lösung?

mleyen 5. Apr 2009 11:34

Re: Array of Byte als Property
 
Zitat:

Zitat von Helmi
Wie kann ich ein Array als Property übergeben?

Nimm es aus Published raus und pack es ins Public.

Satty67 5. Apr 2009 11:39

Re: Array of Byte als Property
 
Er will es ja im OI haben, denke ich?

Klappt es, wenn das Array eine Klasse ist? (ungetestet):
Delphi-Quellcode:
  TArray_IDS = class
    FValues : array[0..255] of Byte;
  private
    function GetValue(index: Integer): Byte;
    procedure SetValue(index: Integer; const Value: Byte);
  public
    property Values[index: Integer]: Byte Read GetValue Write SetValue; default;
  end;
In TInfoForm dann die Klasse als published deklarieren... extra eine Komponente basteln war mir aber jetzt zuviel zum Testen.

Helmi 5. Apr 2009 11:40

Re: Array of Byte als Property
 
Nein nein - im OI brauch ich es nicht...

Satty67 5. Apr 2009 11:41

Re: Array of Byte als Property
 
Dann reicht ja was mleyen gesagt hat, public sollte reichen. Denke das array-verbot hängt ja auch nur mit dem OI zusammen?

Helmi 5. Apr 2009 11:50

Re: Array of Byte als Property
 
In Public hats funktioniert.

Danke!

mleyen 5. Apr 2009 11:51

Re: Array of Byte als Property
 
Es wäre doch wahnsinnig 256 Byte-Werte einzelnd im OI zu setzen. :shock:

Zitat:

Zitat von Satty67
Denke das array-verbot hängt ja auch nur mit dem OI zusammen?

Ich denke mal ja, aber wenn ich das im OI haben wollte würde ich TStrings nehmen (für Copy&Paste) und im Setter dann prüfen ob alle Strings in Byte-Werte konventiert werden können.

Freut mich das es klappt. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.
Seite 1 von 2  1 2      

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