Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi möchte function Test(parameter) : TARRAY dimensionieren (https://www.delphipraxis.net/49975-moechte-function-test-parameter-tarray-dimensionieren.html)

EccoBravo 19. Jul 2005 08:33


möchte function Test(parameter) : TARRAY dimensionieren
 
Hallo,

daß man Variablen von Typ array bedarfsgemäß mit setlength dimensionieren kann habe ich schon begriffen. Aber wie sieht es nun mit Funktionen aus? Wenn man diese in den Code schreibt, will diese unweigerlich ausgeführt werden. Sehen Sie meinen Code:

Delphi-Quellcode:
...

interface

Type
    TebTest = record
                  Element1:string;
                  Element2:string;
                  Element3:integer;
    end;
 
    TebTestArray: Array of TebTest;

...

    function ebTestDo(Parameter):TebTestArray;
...

implementation

    function ebTestDo(Parameter):TebTestArray;
    begin

    end;

    function ebAnderesDo(andereParameter):TandererTyp
    begin
        // hier soll die besagte Function dimensioniert werden
        setLength(ebTestDo,24);   // aber Fehlermeldung "nicht genügend Parameter"
    end;
...
Frage:
Läßt sich soetwas veranstalten und wie?
Es handelt sich bei "TebArray" um große Records und große Array-Dim's
Dabei läßt sich eine Menge sparen.

Vielen Dank

E. B.

marabu 19. Jul 2005 08:40

Re: möchte function Test(parameter) : TARRAY dimensionieren
 
Hallo Ecco,

das SetLength() gehört in deine Funktion selbst rein:

Delphi-Quellcode:
function ebTestDo(Parameter):TebTestArray;
begin
  SetLength(Result, 24);
  ...
end;
Grüße vom marabu

dizzy 19. Jul 2005 08:40

Re: möchte function Test(parameter) : TARRAY dimensionieren
 
Du musst die Funktion in sich selbst dimensionieren.

Delphi-Quellcode:
...

interface

Type
    TebTest = record
                  Element1:string;
                  Element2:string;
                  Element3:integer;
    end;
 
    TebTestArray: Array of TebTest;

...

    function ebTestDo(Parameter):TebTestArray;
...

implementation

    function ebTestDo(Parameter):TebTestArray;
    begin
      SetLength(result, 24); // <---------------- hier
    end;

    function ebAnderesDo(andereParameter):TandererTyp
    begin
    end;
...
Grund: Der Rüchgabewert existiert ausserhalb der Funktion noch nicht.

Gruss,
Fabian

\\edit: Uiii, und kein roter Kasten :cyclops:

EccoBravo 19. Jul 2005 08:43

Re: möchte function Test(parameter) : TARRAY dimensionieren
 
Danke für die prima Idee und schnelle Antwort

E. B.

EccoBravo 19. Jul 2005 08:49

Re: weiterführende Frage
 
darüber habe ich mich schon lange gewundert. Das Herausführen der Ergebnisse aus den Funktionen.
Ein rekursives Aufrufen der Funktion wie es beoi PL1 ging gibt es wohl nicht in Delphi?

Danke für Antwort

E. B.

marabu 19. Jul 2005 09:06

Re: möchte function Test(parameter) : TARRAY dimensionieren
 
Aber sicher sind rekursive Aufrufe einer Funktion möglich:

Delphi-Quellcode:
function Fibonacci(i: cardinal): cardinal;
begin
  if i = 0 then Result := 0
  else if i = 1 then Result := 1
  else Result := Fibonacci(i - 1) + Fibonacci(i - 2);
end;
marabu

EccoBravo 19. Jul 2005 20:54

Re: möchte function Test(parameter) : TARRAY dimensionieren
 
Prima, Dankeschön

EccoBravo


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