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 problem mit dynamischem array (https://www.delphipraxis.net/108888-problem-mit-dynamischem-array.html)

chamop87 20. Feb 2008 19:01


problem mit dynamischem array
 
hallo zusammen,
ich habe ein kleines problem mit einem dynamischen array. ich will ein dyn. array in einer for-schleife mit dem jeweiligen indexwert füllen(array[i]:=i). dies funktioniert für alle werte bis auf den letzten, egal wie lang das array ist. der letzte wert des array steht immer bei 118. wie kommt das?? ich hoffe es kann mir jemand helfen
schon mal danke im voraus!

sirius 20. Feb 2008 19:05

Re: problem mit dynamischem array
 
Ich nehme an es liegt daran, dass der Index von 0 bis 117 geht.

mkinzler 20. Feb 2008 19:06

Re: problem mit dynamischem array
 
Der Index eines dyn. array beginnt immer bei 0
Delphi-Quellcode:
array[i-1]:=i;

marabu 20. Feb 2008 19:07

Re: problem mit dynamischem array
 
Herzlich willkommen in der Delphi-PRAXiS, chamop87.

Wie sieht denn deine FOR-Schleife aus?

Delphi-Quellcode:
uses
  Types;

var
  i: Integer;
  ida: TIntegerDynArray;

begin
  SetLength(ida, 119);
  for i := Low(ida) to High(ida) do
    ida[i] := i;
end;
Freundliche Grüße

chamop87 20. Feb 2008 19:21

Re: problem mit dynamischem array
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich habs gleich mal ausprobiert mit dem low-high aber das problem besteht weiterhin (0,1,....10,118).
ich ahb mal die dateien angehängt...
ich hoffe das hilft beid er problemlösung

DeddyH 20. Feb 2008 19:25

Re: problem mit dynamischem array
 
Delphi-Quellcode:
for fa:=low(randoms) to high(randoms) do randoms[fa]:=fa;
randoms[11]:=11;
Das versteh ich schon nicht. Was soll die 2. Zeile?

chamop87 20. Feb 2008 19:30

Re: problem mit dynamischem array
 
oh, schuldigung, die zweite zeile war nur zu testzwecken da.
11 ist bei mir der höchste wert des array.

eignedlich sollte sie den wert von randoms[11]=118 eben auf 11 setzten, aber selbst das funtioniert nicht, keine ahnung wieso

marabu 20. Feb 2008 20:18

Re: problem mit dynamischem array
 
Hallo,

keine Ahnung, was du dir dabei gedacht hast, aber die Anzahl der Bilder ist wie sie ist - da darfst du nicht einfach eins abziehen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  fa: Integer;
begin
  Randomize;
  zaehl := 0;
  filelistbox1.Directory := 'D:\Eigene Dateien\Eigene Bilder\';
  filelistbox1.Mask := '*.bmp;*.jpg;*.jpeg';
  SetLength(randoms, filelistbox1.Items.Count {- 1});
  bildanzahl := filelistbox1.items.count {- 1};
  ca := 0;
  memo1.lines.add(inttostr(filelistbox1.Items.count));
  for fa :=low(randoms) to high(randoms) do
    randoms[fa] := fa;
end;
Freundliche Grüße

chamop87 20. Feb 2008 20:36

Re: problem mit dynamischem array
 
ich ziehe dort jeweils einen ab, weil das array ja zwangsweise bei null losgeht.
beispiel
anzahl der bilder=10

wenn ich dann schreibe setlength(array,10) habe ich elf speicherplatze, ich brauche aber nur zehn.

ich habe das problem jetzt umgangen, indem ich einen zusätzlichen letzten speicherplatz erstelle den ich aber nicht verwende. in diesem platz hat dann immer den (für mich immer noch unerklärlcihen) wert 118, den ich dann aber nie verwende. über mich würde trotzdem mal interessieren, wie es zu diesem wert kommt, auch wenn ich das problem jetzt umgehen kann.

ich habe das programm wie von meinem vorgänger vorgeschlagen verändert und zudem diese zeilen verändert:
[/delphi]randoms[zufall]:=randoms[bildanzahl-1];
und
[delphi]if bildanzahl=0 then begin


danke nochmal für die tipps

mkinzler 20. Feb 2008 20:39

Re: problem mit dynamischem array
 
Dadurch verändert sich aber die Anzahl nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.
Seite 1 von 2  1 2      

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