Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit in Komponente gerkapseltem Array (https://www.delphipraxis.net/66015-problem-mit-komponente-gerkapseltem-array.html)

EccoBravo 23. Mär 2006 14:27


Problem mit in Komponente gerkapseltem Array
 
Hallo,

habe Problem mit privat gekapselten Arrays einer Komponente

Delphi-Quellcode:
unit MyKomponente;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+   Komponente TMyKomponente
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
interface

uses
  SysUtils,Classes, Controls, ExtCtrls, Graphics;

type

  TFilm:array[1..10,1..10] of single;

  TEichPlan = class(TPaintBox)
  private
     pPlan  : TFilm;
     function getPlan : TFilm;
     procedure setPlan(Wert:TFilm);
  protected

  public

  published
     property Plan : TFilm Read GetPlan Write SetPlan;
     ...
     { Published-Deklarationen }
  end;
...

//##############################################################################
implementation
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    function TEichPlan.getPlan : TFilm;
     begin
         Result:=pPlan;
     end;
     procedure TEichPlan.setPlan(Wert:TFilm);
     begin
         pPlan:=Wert;
     end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

...
wenn ich im Hauptprogramm die Funktion Plan aufrufe,

Delphi-Quellcode:
// Hauptprogramm
type
    TForm1=class(TForm):
       MyKomponente:TMyKomponente
var
   Form1:Form1;
...

implementation  

...
  MyKomponente1.Plan[1,1]:=11;
...
bekomme ich den Compiler-Fehler: "Der linken Seite ksnn nichts zugewiesen werden."

Was habe ich da falsch gemacht?

Danke

E. B.

EccoBravo 23. Mär 2006 14:55

Re: Problem mit in Komponente gerkapseltem Array
 
Hallo, und wie verhält es sich, wenn man anstelle eines Arrays ein Record verwender?

Danke

E. B.

Neutral General 22. Sep 2006 15:18

Re: Problem mit in Komponente gerkapseltem Array
 
Hab gerade etwa das selbe Problem :( ...

Hawkeye219 22. Sep 2006 15:38

Re: Problem mit in Komponente gerkapseltem Array
 
Hallo Michael,

vielleicht hilft dir dieser Thread.

Gruß Hawkeye

oki 22. Sep 2006 15:52

Re: Problem mit in Komponente gerkapseltem Array
 
Hi Leute,

soweit ich mich entsinnen kann, ist es nicht möglich ein Array published zu deklarieren. Das geht nur public und ist dann soweit richtig.

published ist dann besser mit set's zu arbeiten, wenn es denn geht.

gruß oki

Hawkeye219 22. Sep 2006 16:07

Re: Problem mit in Komponente gerkapseltem Array
 
Hallo oki,

Zitat:

Zitat von oki
soweit ich mich entsinnen kann, ist es nicht möglich ein Array published zu deklarieren. Das geht nur public und ist dann soweit richtig.

Du hast Recht, published deklarierte Arrays sind nicht möglich. Ich habe die Direktive glatt übersehen. Eine Änderung auf "public" würde aber den gleichen Fehler provozieren. In dem von mir verlinkten Thread wird ein Ausweg beschrieben, der mit einem Zeiger arbeitet.

Gruß Hawkeye

oki 23. Sep 2006 12:08

Re: Problem mit in Komponente gerkapseltem Array
 
Zitat:

Zitat von Hawkeye219
Eine Änderung auf "public" würde aber den gleichen Fehler provozieren.
Gruß Hawkeye

Also das versteh ich nicht. Ich hab grad folgendes probiert:
Delphi-Quellcode:
type
  TMyArrTyp = Array of Integer;

type
  TForm1 = class(TForm)
  private
    FParam1: TMyArrTyp;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    property Param1 : TMyArrTyp read FParam1 write FParam1;
  end;
Keine Fehlermeldung, durchkompiliert, alles easy und so mach ich das immer wenn es mal sein muß (was zugegeben recht selten ist).

Es spricht natürlich nichts gegen deinen Link. Ich persönlich mag das Thema Zeiger nicht so, da muß man immer so aufpassen :stupid: .

gruß oki

Christian Seehase 23. Sep 2006 12:22

Re: Problem mit in Komponente gerkapseltem Array
 
Moin E.B.,

probier's mal so:

Delphi-Quellcode:
type
  TFilm = array[1..10,1..10] of single;

  TEichPlan = class(TPaintBox)
  private
     pPlan  : TFilm;
    function GetPlan(x, y: integer): single;
    procedure SetPlan(x, y: integer; const Value: single);
  protected

  public
     property Plan[x : integer;y : integer] : single Read GetPlan Write SetPlan;
  end;

  implementation

  function TEichPlan.GetPlan(x, y: integer): single;
  begin
    Result := pPlan[x,y];
  end;

  procedure TEichPlan.SetPlan(x, y: integer; const Value: single);
  begin
    pPlan[x,y] := Value;
  end;

oki 23. Sep 2006 12:27

Re: Problem mit in Komponente gerkapseltem Array
 
Hi Hawkeye219,

muß mich grad mal bei dir entschuldigen. Hab hier wohl einiges übersehen. Es währe schön gewesen, wenn der Rest des Code in Ordnung gewesen wäre. Hier nicht ":" sondern "=" und Property in Public deklariert.
Delphi-Quellcode:
  TFilm:array[1..10,1..10] of single;
...
  published
     property Plan : TFilm Read GetPlan Write SetPlan;
So bin ich gleich mal über die offensichtlichen Fehler gestolpert und habe das eigentliche Problem etwas übersehen.
Nach dem ich den Link gründlich gelesen habe nehme ich alle meine schändlichen Bemerkungen zurück und werde uneingeschränkter Fan von Hawkeye219's Aussage. Das Thema Zeiger ist dabei eher eine weiterführende Sache. Grundlegend beschreibt dieser Link das Problem aber sehr gut und ausreichend.

gruß oki


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