Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Viele Daten per Function übergeben (https://www.delphipraxis.net/93766-viele-daten-per-function-uebergeben.html)

everdream 11. Jun 2007 01:41


Viele Daten per Function übergeben
 
Heyho,
meine situation sieht etwa wie folgt aus: (habe 2 Klassen)
HauptKlasse:
Delphi-Quellcode:
unit mMain;

interface

uses
mObject;
type
  TMain = class

  private
    Objects: Array[1..10] of TObject;
  public
    prucedure DatenAusgeben;
  end;

implementation

[...] {Es wurde mindestens 1x TObject createt}

procedure DatenAusgeben;
begin
  ???:=Object.Daten;
{hier kommt dann die ausgabe in listbox o.ä.} 
end;

end.
mObject:
Delphi-Quellcode:
unit mObject;

interface

type
  TObject = class(TObject)
  private
    a, b, c: integer;
    d: Array[1..20] of integer;
    e: array[0..20] of String[17];
  public
    function Daten: ???;
  end;

implementation

[...]

function Daten: ???; // <--- hier is das problem
begin
 ???
end;

end.
wie ihr seht habe ich einiges an daten in meinem Object, und ich würde gerne alles auf einmal raus holen.
Ich hab shcon versucht einen array oder eine menge als functionstyp zu wählen, aber irgendwie ist delphi mit dieser methode nicht vertraut :warn:

also, falls irgendjemand da nen lösungsanschlag (für einen blutigen anfänger) parat hat, ich wäre sehr dankbar!!

Sharky 11. Jun 2007 05:16

Re: Viele Daten per Function übergeben
 
Hai everdream,

deklariere Dir einen Typ für dein Array. Dann kannst Du diesen auch als Ergebnisstyp einer Funktion angeben.

HauptKlasse:
Delphi-Quellcode:
unit mMain;

interface

uses
mObject;
type
  TArrayOfObject = Array[1..10] of TObject;

  TMain = class
  private
    Objects: TArrayOfObject;
  public
    prucedure DatenAusgeben;
  end;

implementation
.
.
.
function Daten: TArrayOfObject;
begin
 ???
end;

end.
Wobei Du anstelle eines Array of TObject auch einfach eine Delphi-Referenz durchsuchenTList verwenden kannst.

alzaimar 11. Jun 2007 07:10

Re: Viele Daten per Function übergeben
 
Wie wäre es mit einem Variant:
Delphi-Quellcode:
Type
  TMyObject = Class
    fString1,
    fString2 : String;
    fInteger : Integer;
    fMyFloat : Double;
  Public
    Function Data : Variant;
 End;

Procedure TMyObject.Data : Variant;
Begin
  VarArrayCreate (Result, [0,3]); // Ich glaube so gehts
  Result [0] := fString1;
  Result [1] := fString3;
  Result [2] := fInteger;
  Result [3] := fMyFloat;
End;
Und Abrufen geht so;
Delphi-Quellcode:
Var
  MyData : Variant;

Begin
  MyData := MyObject.Data;
// Und Zugriff über
  String1 := MyData[0];
// etc.

thkerkmann 11. Jun 2007 07:34

Re: Viele Daten per Function übergeben
 
Hi,

hallo Leute, warum so kompliziert.

Wie wäre es denn mit einem einfachen Record ? Er will ja die Daten der einzelen Objekte haben.

und btw. Wieso heist die Klasse
Delphi-Quellcode:
  TObject= Class(TObject)
? geht das überhaupt ?

Ich tendiere ja eher dazu dann
Delphi-Quellcode:
TMyObject = class(tObject)
zu sagen. Oder einfach
Delphi-Quellcode:
TMyObject=class

alzaimar 11. Jun 2007 07:45

Re: Viele Daten per Function übergeben
 
Zitat:

Zitat von thkerkmann
Hi,

hallo Leute, warum so kompliziert.

Wie wäre es denn mit einem einfachen Record ? Er will ja die Daten der einzelen Objekte haben.

Stimmt, aber mit Variants ist es einheitlich, d.h. er kann sich eine abstrakte Basisklasse basteln, die die Funktion 'Data' deklariert. Die einzelnen Ableitungen überschreiben dann einfach die Funktion 'Data'.

everdream 12. Jun 2007 23:02

Re: Viele Daten per Function übergeben
 
okay, danke für eure tipps, habt mir damit sehr geholfen!
ich werde wohl einen record bzw variants benutzen. eine eigene klasse erstellen: da blick ich noch nicht ganz wie das gemeint ist, aber mehr als nen einheitlichen record brauche ich auch für mein proggi nicht.

nochmal vielen dank :bounce1:


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