![]() |
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:
Frage:
...
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; ... 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. |
Re: möchte function Test(parameter) : TARRAY dimensionieren
Hallo Ecco,
das SetLength() gehört in deine Funktion selbst rein:
Delphi-Quellcode:
Grüße vom marabu
function ebTestDo(Parameter):TebTestArray;
begin SetLength(Result, 24); ... end; |
Re: möchte function Test(parameter) : TARRAY dimensionieren
Du musst die Funktion in sich selbst dimensionieren.
Delphi-Quellcode:
Grund: Der Rüchgabewert existiert ausserhalb der Funktion noch nicht.
...
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; ... Gruss, Fabian \\edit: Uiii, und kein roter Kasten :cyclops: |
Re: möchte function Test(parameter) : TARRAY dimensionieren
Danke für die prima Idee und schnelle Antwort
E. B. |
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. |
Re: möchte function Test(parameter) : TARRAY dimensionieren
Aber sicher sind rekursive Aufrufe einer Funktion möglich:
Delphi-Quellcode:
marabu
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; |
Re: möchte function Test(parameter) : TARRAY dimensionieren
Prima, Dankeschön
EccoBravo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz