Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Arrays setzen ohne Array[Nummer] (https://www.delphipraxis.net/151564-arrays-setzen-ohne-array%5Bnummer%5D.html)

Delphi-Narr 23. Mai 2010 12:44


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!

Neutral General 23. Mai 2010 12:48

Re: Arrays setzen ohne Array[Nummer]
 
Hi,

Wenn das Array einen eigenen Typ hat also z.B.

Delphi-Quellcode:
type
  TIntArray = Array of Integer;
dann kannst du das so machen:

Delphi-Quellcode:
var arr: TIntArray;
begin
  arr := TIntArray.Create(1,2,3,4,5,6,7,8,9);
end;

SirThornberry 23. Mai 2010 12:49

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.

Delphi-Narr 23. Mai 2010 12:55

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:
const
S0:array [0..8] of integer=(1,2,3,4,5,6,7,8,9);
und dann

Delphi-Quellcode:
S[0]:=S0;
Doch das geht leider nicht...

Neutral General 23. Mai 2010 12:56

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.

daywalker9 23. Mai 2010 12:57

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

Neutral General 23. Mai 2010 13:00

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;

SirThornberry 23. Mai 2010 13:12

Re: Arrays setzen ohne Array[Nummer]
 
@Neutral General: Ab welcher Delphiversion funktioniert das mit dem Create bei Arraytypen?

daywalker9 23. Mai 2010 13:14

Re: Arrays setzen ohne Array[Nummer]
 
Also in D2010 funktioniert es. Denke das dies mit D2009 eingeführt wurde

himitsu 23. Mai 2010 14:05

Re: Arrays setzen ohne Array[Nummer]
 
Delphi-Quellcode:
// 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;
(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)

Delphi-Quellcode:
var arr: TIntegerDynArray;
begin
  arr := CreateIntArray([1,2,3,4,5,6,7,8,9]);
end;
Aber Delphi 2006/TDE könnte man sich, bei sowas, auch noch mit Record-Methoden und einer Kapselung des Arrays in einem Record helfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz