![]() |
Gemeinsamer Array-typ?
Hi!
Ich suche eine Möglichkeit, einen beliebigen Array-Typ als Parameter einer Funktion zu erwarten. Diese soll das Array ab einem bestimmten Index "um eins aufrücken". Ich will das jedoch ziemlich allgemein halten, und möglichst ohne Überladungen. Die sind zuviel Tipparbeit :? |
Re: Gemeinsamer Array-typ?
Hi.
Delphi-Quellcode:
So müsste es gehen...
function aufruecken(x : variant, wieviel : integer = 1) : variant;
var i : integer; y : variant; begin y := VarArrayCreate([0, length(x) + wieviel], VarType(x)); for i := length(x) + wieviel downto 1 do y[i] := x[i - wieviel]; end; |
Re: Gemeinsamer Array-typ?
|
Re: Gemeinsamer Array-typ?
Zitat:
|
Re: Gemeinsamer Array-typ?
Zitat:
Delphi-Quellcode:
procedure test(a: array of const);
begin showMessage('test'); end; procedure TForm1.Button1Click(Sender: TObject); var a: array[0..1] of string; begin a[0] := 'test'; test(a); end; |
Re: Gemeinsamer Array-typ?
Zitat:
1.) "normale" Array-Parameter für statische Arrays 2.) offene Array-Parameter für dynamische Arrays 3.) variante offene Array-Parameter 4.) Arrays im Datentyp Variant abgebildet Die 4 Arten sind nicht miteinander kompatibel! Die Idee "eine Procedure für Alles" kannst du also gleich begraben. Offene Array-Parameter sind an einen Datentyp gebunden. Du musst also für jeden Datentyp eine eigene Prozedure schreiben. Variante offene Array-Parameter haben einen grossen Overhead; bei sehr grossen Arrays sollte die nicht verwenden. Dies gilt ebenso für Nummer 4.). Es gäbe da noch die Funktion Slice, die Teile von dynamischen Arrays liefert. Aber da ist wohl viel Compiler-Magic dabei; ich habe den Sourcecode dazu nicht gefunden. |
Re: Gemeinsamer Array-typ?
Zitat:
|
Re: Gemeinsamer Array-typ?
Also zum Löschen hab ich eine ultimative Funktion geschrieben. Such mal nach DeleteArray in der Codelib. Eventuell kannst du es an deine Bedürfnisse anpassen, allerdings wird dort auch bissle Assembler verwendet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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