![]() |
Variable Übergabeparameter
Ich wollte eine folgende Funktion schreiben:
Delphi-Quellcode:
Was muss jetzt ansitelle von "vArray", um eben alle arrays zu benutzen? Also integerarrays, stringarrays, oder andere, ohne eine eigene Methode zu schreiben?
procedure changeItemsnum(vArray : ??? ; vItems : Integer);
begin SetLength(vArray, Length(vArray) + vItems); end; |
Re: Variable Übergabeparameter
Das geht meines Wissens nach nicht.
|
Re: Variable Übergabeparameter
gibts da nicht sowas wie array of const :gruebel:
|
Re: Variable Übergabeparameter
Array of const bedeuted, dass du der Funktion ein Array von verschiedenen Typen übergeben kannst (z.B. bei Format(f: string; arg: array of const) )
Das ist so etwas ähnliches wie "..." in C (z.B. printf(char *fmt, ...) ) und ist nicht mit einem normalen array zu verwechseln |
Re: Variable Übergabeparameter
Array of Variant
TVarArray TVarRec |
Re: Variable Übergabeparameter
Du könntest dir einen Typ TArray basteln, von dem du dann mehrere Typen ableleitest TIntArray, TStringArray, TCharArray usw.
|
Re: Variable Übergabeparameter
Man könnte doch auch einfach die Funktion überladen, oder spricht da gerade etwas dagegen?
Flare |
Re: Variable Übergabeparameter
Naja da spricht dagegen das man viel zu tun hätte und das man bei jedem neuen Array Typ noch ne Funktion mehr bauen müsste...
Zitat:
TVarArray und TVarRec funktioniert nicht und Array of Variant würde bei Objekten nicht funktionieren :| |
Re: Variable Übergabeparameter
Zitat:
|
Re: Variable Übergabeparameter
So :) Endlich bin ich mal dazu gekommen, aber es funktioniert nicht :
Delphi-Quellcode:
procedure Insert(const AData; AArray : array of const; const AIndex : Cardinal);
var i: Cardinal; begin if (AIndex <= Length(AArray)) then begin SetLength(AArray, Length(AArray) + 1); for i := High(AArray) downto AIndex + 1 do AArray[i] := AArray[i - 1]; AArray[AIndex] := AData; end; end; Zitat:
|
Re: Variable Übergabeparameter
Zitat:
Am besten siehst du dir mal die RTL-Quellen von SetLength an, damit du siehst, wie schwer sowas ist ;) |
Re: Variable Übergabeparameter
@xZise: Hm, was hast du denn gegen T(Object)List ;) ?
Du könntest natürlich auf Tiburón warten und schauen, ob es dann mit dessen Generics zu lösen ist :mrgreen: (was ich aber nicht erwarte) - aber ein Array ist hier einfach der falsche Ansatz, eine Liste dagegen dafür geschaffen. |
Re: Variable Übergabeparameter
Zitat:
Zitat:
|
Re: Variable Übergabeparameter
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz