Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Record als Property übergeben (https://www.delphipraxis.net/78608-record-als-property-uebergeben.html)

Helmi 7. Okt 2006 21:17


Record als Property übergeben
 
Hallo,

ich habe eine Mainform in der ich ein Record habe:

Delphi-Quellcode:
type
  //Record für Verwaltung
  Verwaltung_Rec = record
    Name   : String[255];
    OrdnerID: String[50];
  end;
In der MainForm hab ich eine Variable die so definiert ist:
Delphi-Quellcode:
  Liste_Sprachen = Array of Verwaltung_Rec;
so - so weit so gut.

Ich habe eine zweite Form (EinstellungenForm) in der ich Properties definiert habe.
Die Variable "Liste_Sprachen" möchte ich nun an diese Form übergeben.

In der EinstellungenForm hab ich folgendes programmiert:
Delphi-Quellcode:
type
  //Record für Verwaltung
  Verwaltung_Rec = record
    Name   : String[255];
    OrdnerID: String[50];
  end;

  private

    FListe_Sprachen  : Verwaltung_Rec;

  published
    { Published-Deklarationen }
    property Liste_Sprachen: Verwaltung_Rec  read FListe_Sprachen write FListe_Sprachen;
Wenn ich aber nun in der MainForm
Delphi-Quellcode:
  with EinstellungenForm do
    begin
      Liste_Sprachen   := Array_Sprachen;
    end;
mache, dann bekomm ich folgende Meldung:
Zitat:

[Fehler] Main.pas(741): Inkompatible Typen: 'Verwaltung_Rec' und 'dynamic array'
Was ja eigentlich auch ok ist, dann in der MainForm ist es ein Array und in EinstellungenForm ein Record.

Nur kann ich ja nicht in EinstellungenForm bei den property
Delphi-Quellcode:
    property Liste_Sprachen: Array of Verwaltung_Rec  read FListe_Sprachen write FListe_Sprachen;
Denn dann bekomm ich die Meldung:
Zitat:

[Fehler] Einstellungen.pas(85): Bezeichner erwartet, aber 'ARRAY' gefunden
Nur, wie bekomm ich es nun hin, dass ich das Record als Property übergeben kann?

mkinzler 7. Okt 2006 21:27

Re: Record als Property übergeben
 
Wenn du mehrere Record vom gleichen typ übergeben willst, kannst due eine indizierte Property nehmen. Aber du kannst dann trotzdem immer nur einen record auf einmal übergeben (keinen Array).

Helmi 7. Okt 2006 21:30

Re: Record als Property übergeben
 
Danke

ich denke ich bekomme auch probleme damit, dass mein Array dynamisch ist.

Ich denke ich werde bzw. muss auf eine TStringList ausweichen

himitsu 7. Okt 2006 21:32

Re: Record als Property übergeben
 
Du definierst Verwaltung_Rec mehrfach.
Und obwohl die Definitionen gleich ausshen sind sie für den Compiler nicht das Selbe.

Definiere den records nur einmal () und greife in beiden Units auf die selbe Definition zu.



Zitat:

In der MainForm hab ich eine Variable die so definiert ist:

Delphi-Quellcode:
Liste_Sprachen = Array of Verwaltung_Rec;

Ich bin mir sicher, daß dieses keine Definition für eine Variable ist. :stupid:


Delphi-Quellcode:
Type TListe_Sprachen_Array = Array of Verwaltung_Rec;

Var Liste_Sprachen: TListe_Sprachen_Array;
...
property Liste_Sprachen: TListe_Sprachen_Array read FListe_Sprachen write FListe_Sprachen;
Wobei es o bestimmt besser ist:
Delphi-Quellcode:
property Liste_Sprachen[Index: Integer]: Verwaltung_Rec read Get_Liste_Sprachen write Set_Liste_Sprachen;

function Get_Liste_Sprachen(Index: Integer): Verwaltung_Rec;
  begin
    Result := FListe_Sprachen[Index];
  end;
procedure Set_Liste_Sprachen(Index: Ineger; Rec: Verwaltung_Rec);
  begin
    FListe_Sprachen[Index] := Rec;
  end;


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