Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variable Übergabeparameter (https://www.delphipraxis.net/79784-variable-uebergabeparameter.html)

xZise 28. Okt 2006 11:48


Variable Übergabeparameter
 
Ich wollte eine folgende Funktion schreiben:
Delphi-Quellcode:
procedure changeItemsnum(vArray : ??? ; vItems : Integer);
begin
  SetLength(vArray, Length(vArray) + vItems);
end;
Was muss jetzt ansitelle von "vArray", um eben alle arrays zu benutzen? Also integerarrays, stringarrays, oder andere, ohne eine eigene Methode zu schreiben?

shubbi 28. Okt 2006 12:20

Re: Variable Übergabeparameter
 
Das geht meines Wissens nach nicht.

Meflin 28. Okt 2006 12:24

Re: Variable Übergabeparameter
 
gibts da nicht sowas wie array of const :gruebel:


shubbi 28. Okt 2006 12:27

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

mkinzler 28. Okt 2006 12:31

Re: Variable Übergabeparameter
 
Array of Variant
TVarArray
TVarRec

Cöster 28. Okt 2006 12:34

Re: Variable Übergabeparameter
 
Du könntest dir einen Typ TArray basteln, von dem du dann mehrere Typen ableleitest TIntArray, TStringArray, TCharArray usw.

Flare 28. Okt 2006 14:10

Re: Variable Übergabeparameter
 
Man könnte doch auch einfach die Funktion überladen, oder spricht da gerade etwas dagegen?


Flare

Neutral General 28. Okt 2006 14:11

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:

Zitat von mkinzler
Array of Variant
TVarArray
TVarRec

Habs mal ausprobiert...

TVarArray und TVarRec funktioniert nicht und Array of Variant würde bei Objekten nicht funktionieren :|

Meflin 28. Okt 2006 14:20

Re: Variable Übergabeparameter
 
Zitat:

Zitat von Neutral General
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...

So musst du eben innerhalb einer Funktion die Unterscheidung treffen, wo ist der Unterschied? Im Grund sind überladene Funktionen ja genau für so etwas gedacht... im Zweifelsfall implementiert man eben die Funktionalität nur in einer Funktion und in den restlichen konvertiert man in das Format dieser einen Funktion und übergibt die Werte an diese...


xZise 30. Sep 2007 17:37

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:

Inkompatible Typen
Inkompatible Typen: 'TVarRec' und 'procedure, untyped pointer or untyped parameter'


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr.
Seite 1 von 2  1 2      

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