Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array mit denselbem Wert vorbelegen (https://www.delphipraxis.net/12736-array-mit-denselbem-wert-vorbelegen.html)

Praktikant 3. Dez 2003 11:28


Array mit denselbem Wert vorbelegen
 
eigentlich was ganz simples:
Wie belege ich einen array mit denselbem Wert vor

Habe einen array[1..4] of integer

Nun soll der array jeweils mit '1' vorbelegt werden, geht doch sicher in einem Rutsch?!
Meine Versuche ohne explizite Zuweisung ergaben immer einen syntax fehler :(

Tyrael Y. 3. Dez 2003 11:30

Re: Array mit denselbem Wert vorbelegen
 
Delphi-Quellcode:
for i := 0 to Length(meinArray) - 1 do
begin
  MeinArray[i] := 1;
end;
Gruß

Praktikant 3. Dez 2003 11:36

Re: Array mit denselbem Wert vorbelegen
 
danke für die schnelle antwort :)

Dachte dass man evtl. doch ohne Schleife auskommt.
Weshalb eigentlich lengtharray-1 :?:

Da fällt mir doch beim schreiben grad ein dass das letzte zeichen eines arrays ja immer ein Steuerzeichen enthält, welches nicht überschrieben werden darf, nicht wahr?!

Also nochma thx!

Sourcemaker 3. Dez 2003 12:05

Re: Array mit denselbem Wert vorbelegen
 
Length-1 wenn das Array null relativ ist !

Gruß

Frank

MyRealName 3. Dez 2003 12:33

Re: Array mit denselbem Wert vorbelegen
 
Versuch doch mal FillChar :)

begin
FillChar(Pointer(MyArray[0])^, Length(MyArray) * SizeOf(DatenTyp), 0); // füllt das Array mit Nullen auf
end;


MyRealName

Corelgott 13. Sep 2005 09:58

Re: Array mit denselbem Wert vorbelegen
 
@Fillchar

thx nice one! :thumb:

cya
Corelgott

Kroko1999 13. Sep 2005 10:25

Re: Array mit denselbem Wert vorbelegen
 
Zitat:

Zitat von MyRealName
Versuch doch mal FillChar :)

begin
FillChar(Pointer(MyArray[0])^, Length(MyArray) * SizeOf(DatenTyp), 0); // füllt das Array mit Nullen auf
end;


MyRealName

geht aber nur mit 0 zu füllen :!:

shmia 13. Sep 2005 10:32

Re: Array mit denselbem Wert vorbelegen
 
Delphi-Quellcode:
type
   TxxxArray : array[1..4] of integer;

const
   defaultArray = ( 1, 2, 3, 4  );

var
   array1 : TxxxArray;

begin
   array1 := defaultArray;  // Array mit default Werten vorbelegen

Corelgott 14. Sep 2005 01:43

Re: Array mit denselbem Wert vorbelegen
 
hm...

laut delphi hilfe:

Delphi-Quellcode:
procedure FillChar(var X; Count: Integer; Value: Byte)
das letzte beschreibt den value... oder?! Oo
**ich habe es bisher nur mit 0 getestet... aber von 0 bis 255 sollte doch theoretisch alles machbar sein...
**proof me wrong...

cya
Corelgott

DirectFromHell 14. Sep 2005 05:45

Re: Array mit denselbem Wert vorbelegen
 
Ja das sollte eigentlich gehen. Aber bei mir war es so, dass ich so wie oben beschrieben eine Access Violation hatte. Bei mir geht nur folgendes:
Delphi-Quellcode:
FillChar (Array, Length(Array)*SizeOf(Datentyp), 0);

Kroko1999 14. Sep 2005 06:23

Re: Array mit denselbem Wert vorbelegen
 
Zitat:

Zitat von Corelgott
hm...

laut delphi hilfe:

Delphi-Quellcode:
procedure FillChar(var X; Count: Integer; Value: Byte)
das letzte beschreibt den value... oder?! Oo
**ich habe es bisher nur mit 0 getestet... aber von 0 bis 255 sollte doch theoretisch alles machbar sein...
**proof me wrong...

cya
Corelgott

ja bei 1 erhälts Du aber für jeden Integer-Wert $01010101 :!: etc.

MPirnstill 14. Sep 2005 07:37

Re: Array mit denselbem Wert vorbelegen
 
Zitat:

Zitat von Tyrael Y.
Delphi-Quellcode:
for i := 0 to Length(meinArray) - 1 do
begin
  MeinArray[i] := 1;
end;

@Tyrael Y.

Kann man nicht einfach statt "length(meinArray) - 1" dafür "high(meinArray)" benutzen. Dann braucht man nicht noch extra einen wieder abziehen. Oder ist das nicht das gleiche. Und dann auch gleich statt "0" dafür "low(meinArray)" um sicher zugehen, falls das Array woanders beginnt als bei Null.

Gruß
Micha

ste_ett 14. Sep 2005 07:45

Re: Array mit denselbem Wert vorbelegen
 
Bei einem dynamsichen Array kann man "0 to High()" nutzen, bei einem statischen Array muss der Index nicht bei 0 beginnen (s. Beispiel aus #1 / "array[1..4]"), dort sollte man dann "Low(Name) to High(Name)" benutzen. :)

Sharky 14. Sep 2005 07:52

Re: Array mit denselbem Wert vorbelegen
 
Oder sich für alle Arten von Arrays etwas basteln:
Delphi-Quellcode:
procedure FillArray (var aArray : Array of Integer; aValue: Cardinal); overload;
var
  ndx : integer;
begin
  for ndx := Low(aArray) to High(aArray) do
   aArray[ndx] := aValue;
end;

procedure FillArray (var aArray : Array of Char; aValue: Char); overload;
var
  ndx : integer;
begin
  for ndx := Low(aArray) to High(aArray) do
   aArray[ndx] := aValue;
end;

procedure FillArray (var aArray : Array of String; aValue: String); overload;
var
  ndx : integer;
begin
  for ndx := Low(aArray) to High(aArray) do
   aArray[ndx] := aValue;
end;

procedure TForm1.btn_TestClick(Sender: TObject);
var
  myStringArray : Array[2..10] of String;
  myIntegerArray : Array[2..10] of Integer;
  myCharArray : Array[2..10] of Char;
begin
  FillArray(mystringArray,'blubb');
  FillArray(myIntegerArray,1);
  FillArray(myCharArray,' ');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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