AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Typdeklaration array und normaler Typ gleichzeitig
Thema durchsuchen
Ansicht
Themen-Optionen

Typdeklaration array und normaler Typ gleichzeitig

Ein Thema von R2009 · begonnen am 11. Mär 2009 · letzter Beitrag vom 12. Mär 2009
Antwort Antwort
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

Typdeklaration array und normaler Typ gleichzeitig

  Alt 11. Mär 2009, 05:31
Hi alle,

ich habe in einem Beispiel folgendes gesehen:

Trealarray ist als Klasse definiert (wie weiss ich nicht).
t:Trealarray;

Zugriff einmal t[i,j]:=... als array und gleichzeitig t.xmax als Funktion mit Rückgabewert.

sowas wie t[i,j].wert hätt ich ja verstanden.
Wie macht man sowas?

Über eine Antwort würde ich mich freuen!
Rainer Unger
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#2

Re: Typdeklaration array und normaler Typ gleichzeitig

  Alt 11. Mär 2009, 07:07
Das geht über das sogenannte Default Array Property. Schau dir mal das Property Items in TList an.
Uwe Raabe
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Typdeklaration array und normaler Typ gleichzeitig

  Alt 11. Mär 2009, 09:32
Hi,

ich komm da nicht weiter. Vielleicht fehlt mir auch das nötige Wissen. Ich habe eine eigene Klasse Ttest mit einem default property erzeugt.
Hab das so behandelt wie ich Propertys immer behandle.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, math, StdCtrls;

type
  Ttest = class
  private
    { Private-Deklarationen }
    constructor create;
    function iget(Index: Integer): integer;
    procedure iput(Index: Integer; Item: integer);
    //ig:array of integer;
  public
    { Public-Deklarationen }
    property I[Index: Integer]: integer read iGet write iPut; default;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  s:Ttest;

implementation

{$R *.dfm}
constructor Ttest.create;
begin
  //setlength(I,10);
end;

function Ttest.iget(Index: Integer): integer;
begin
  result:=I[Index];
end;

procedure Ttest.iput(Index: Integer; Item: integer);
begin
  I[Index]:=Item;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.caption:=inttostr(s[10]);
end;

procedure TForm1.FormCreate(Sender: TObject);
var f:double;tl:tlist;
begin
  s:=TTtest.Create;
  s[1]:=0;
end;

end.
Irgendwo muss ich dem Teil doch mitteilen wie gross das Array sein soll. Sobald ich in create setlength einfüge verlangt er nach dem I ein "[".

Kann mir jemand helfen?

Danke im Vorraus!
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Typdeklaration array und normaler Typ gleichzeitig

  Alt 11. Mär 2009, 09:37
Du musst auch irgendwo ein Feld haben:
Delphi-Quellcode:
type
  Ttest = class
    constructor create; //der ist selten private
  private
    { Private-Deklarationen } 
    FI:array of Integer; //das Feld zum Property
    function iget(Index: Integer): integer;
    procedure iput(Index: Integer; Item: integer);
    //ig:array of integer;
  public
    { Public-Deklarationen } 
    property I[Index: Integer]: integer read iGet write iPut; default;
  end;


constructor Ttest.create;
begin
  setlength(FI,10);
end;

function Ttest.iget(Index: Integer): integer;
begin
  result:=FI[Index];
end;

procedure Ttest.iput(Index: Integer; Item: integer);
begin
  FI[Index]:=Item;
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Typdeklaration array und normaler Typ gleichzeitig

  Alt 11. Mär 2009, 10:14
Hi,

vielen Dank hab's begriffen!

Danke für die Mühe!
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#6

Re: Typdeklaration array und normaler Typ gleichzeitig

  Alt 11. Mär 2009, 11:34
Nur ganz nebenbei...

Es ist grundsätzlich nicht schlecht sich an gewisse Konventionen zu halten, damit Menschen, die dir auf eine Frage helfen sollen, einen leichteren Einstieg in dein Projekt bekommen.

Getter und Setter Methoden werden im der Regel mit GetIrgendwas und SetIrgendwas bezeichnet und dem Feld auf das sie sich beziehen (wie auch im Beispiel von sirius) wird ein großes "F" vorgestellt.

Es ist ganz praktisch, dies so zu handhaben, weil alle sofort auf einen einheitlichen Stand sind.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Typdeklaration array und normaler Typ gleichzeitig

  Alt 12. Mär 2009, 05:07
Hi,

war mir klar, hab das im Beispiel, verschlampt.

Danke für die Info!
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 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