AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

array of record in class

Ein Thema von LiS · begonnen am 22. Apr 2009 · letzter Beitrag vom 23. Apr 2009
Antwort Antwort
LiS

Registriert seit: 3. Dez 2004
87 Beiträge
 
Turbo Delphi für Win32
 
#1

array of record in class

  Alt 22. Apr 2009, 23:27
Hallo!

Ich bin gerade dabei, mein Programm etwas objektorientierter zu gestalten, habe aber noch keine Erfahrungen mit Klassen etc.
In meinem Programm nutze ich einen array of record, in welchem verschiedene Daten gespeichert sind. Dieser array soll auf verschiedene Arten ausgewertet werden und dazu möchte ich eine Klasse nutzen. Ich habe es leider nicht herausfinden können, wie die Klasse aufgebaut sein muss, damit die Definition eines records vorhanden ist, dann ein dynamisches array of record, in welchem die Daten stehen und dann verschiedene Funktionen, die die Auswertung für die Daten liefern.
Vielleicht könnt ihr mir ja auch andere Lösungen für das Problem vorschlagen, denn ich bin wie gesagt mit der OOP noch gänzlich unerfahren.

Vielen Dank für Eure Hilfe!
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: array of record in class

  Alt 23. Apr 2009, 01:08
Zeig uns doch ein wenig Quellcode, damit wir dir konkrete Ratschläge geben können.

Records sind übrigens konstrukte, die man idR durch Klassen ersetzt, wenn man 100% OOP programmiert.

Ersetze also erstmal das Record durch eine Klasse. Die Elemente sind dann Felder mit der Sichtbarkeit public. Beachte! Eine Klasse muss in Zukunft erstellt (instanziiert) werden und nicht einfach so wie ein Record verwendet werden.

Vorher:

Delphi-Quellcode:
type
  TKoordinate = record
    x: Integer;
    y: Integer;
  end;

procedure MeineFunktion;
var
  k: TKoordinate;
begin
  k.x := 5;
  k.y := 3;
end;
Nachher:

Delphi-Quellcode:
type
  TKoordinate = class(TObject)
  public
    x: Integer;
    y: Integer;
  end;

procedure MeineFunktion;
var
  k: TKoordinate;
begin
  k := TKoordinate.Create();
  try
    k.x := 5;
    k.y := 3;
  finally
    k.free;
  end;
end;
Bei deiner Verwaltungsklasse sagst du dann einfach sowas:

Delphi-Quellcode:
type
  TKoordinatenArray = array of TKoordinate; // dynamischer Array

  TVerwaltungsklasse = class(TObject)
  private
    meinArray: TKoordinatenArray;
  public
    procedure machWasMitMeinemArray;
  end;

procedure TVerwaltungsklasse.machWasMitMeinemArray;
begin
  //meinArray...
end;
Ich denke, die Deklaration von TKoordinatenArray ist das, was du gesucht hast. Eine solche Typdeklaration ist wichtig, wenn du z.B. einen Array of Irgendwas als Funktionswert zurückgeben willst.

Falsch:

function MyFunction: array of TObject; Richtig:

Delphi-Quellcode:
type
  TObjectArray = array of TObject;

function MyFunction: TObjectArray;
Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: array of record in class

  Alt 23. Apr 2009, 05:34
Man könnte dann den Array noch durch eine Liste ersetzen
Markus Kinzler
  Mit Zitat antworten Zitat
LiS

Registriert seit: 3. Dez 2004
87 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: array of record in class

  Alt 23. Apr 2009, 09:27
Zitat von blackdrake:
Ich denke, die Deklaration von TKoordinatenArray ist das, was du gesucht hast.
Danke, genau das habe ich gesucht. Das werde ich jetzt mal versuchen, einzubauen; ääh.
  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:13 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