![]() |
Arrays setzen ohne Array[Nummer]
Hallo,
ich möchte gerne einem Array Werte zuweisen. Ich möchte jedoch nicht immer Array[0]:=1 Array[1]:=2 .. sodern Array:=(1,2,3,4,5,6) zuweisen können. Wie mache ich das? Tut mir leid wenns das schon häufiger gibt, aber ich habe soviel zu arrays gefunden, dass mein Fall nicht wirklick dabei war... Liebe Grüße! |
Re: Arrays setzen ohne Array[Nummer]
Hi,
Wenn das Array einen eigenen Typ hat also z.B.
Delphi-Quellcode:
dann kannst du das so machen:
type
TIntArray = Array of Integer;
Delphi-Quellcode:
var arr: TIntArray;
begin arr := TIntArray.Create(1,2,3,4,5,6,7,8,9); end; |
Re: Arrays setzen ohne Array[Nummer]
Zur Laufzeit geht das so nicht. Das geht nur bei globaler Initialisierung.
Zur Laufzeit müsstest du dann auf CopyMemory oder Move zurück greifen wobei du dafür die Daten bereits so am Stück da liegen haben musst. |
Re: Arrays setzen ohne Array[Nummer]
Also ich habe ein 2 dimensionales Array (Tdimarray=array [0..8] of array [0..8] of integer). Beim Programmstart möchte ich gerne
dann der Variablen S:Tdimarray S[0] auf meinen Array setzen, den ich jetzt als const deklariert habe. also
Delphi-Quellcode:
und dann
const
S0:array [0..8] of integer=(1,2,3,4,5,6,7,8,9);
Delphi-Quellcode:
Doch das geht leider nicht...
S[0]:=S0;
|
Re: Arrays setzen ohne Array[Nummer]
@SirThornberry: Doch, das geht :wink:
@Delphi-Narr: Das müsste gehen wenn du Array[0..8] of Integer als eigenen Typ deklarierst. |
Re: Arrays setzen ohne Array[Nummer]
Wenn du Zuweisbare typisierte Konstanten anhast ja. Ansonsten deklariere es als "var" und du kann das ohne die Option benutzten
|
Re: Arrays setzen ohne Array[Nummer]
Du kannst es konkret so machen:
Delphi-Quellcode:
type
TIntArray9 = Array[0..8] of Integer; const S0: TIntArray9 = (1,2,3,4,5,6,7,8,9); var S: Array[0..8] of TIntArray9; begin S[0] := S0; end; |
Re: Arrays setzen ohne Array[Nummer]
@Neutral General: Ab welcher Delphiversion funktioniert das mit dem Create bei Arraytypen?
|
Re: Arrays setzen ohne Array[Nummer]
Also in D2010 funktioniert es. Denke das dies mit D2009 eingeführt wurde
|
Re: Arrays setzen ohne Array[Nummer]
Delphi-Quellcode:
(ich weiß, es ließe sich noch noch mit einem MOVE optimieren, aber so wäre erstmal für alle möglichen Arrays sehr leicht anpaßbar)
// TIntegerDynArray ist in der Unit Types schon fertig deklariert
function CreateIntArray(Data: array of Integer): TIntegerDynArray; var i: Integer; begin SetLength(Result, Length(Data)); for i := 0 to High(Result) do Result[i] := Data[i + Low(Data)]; end;
Delphi-Quellcode:
Aber Delphi 2006/TDE könnte man sich, bei sowas, auch noch mit Record-Methoden und einer Kapselung des Arrays in einem Record helfen.
var arr: TIntegerDynArray;
begin arr := CreateIntArray([1,2,3,4,5,6,7,8,9]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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