Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FOR-Schleifen Problem (https://www.delphipraxis.net/159489-schleifen-problem.html)

delphinub23 30. Mär 2011 14:33

AW: FOR-Schleifen Problem
 
So funktioniert es wie ich es brauche. Nur die Zuweisung des 1. Feldes muss mit in die Schleife, da sonst der 1.te eintrag bei der Ausgabe fehlt.

Danke Sir Rufo!

Delphi-Quellcode:
procedure TFmMain.btnGenClick(Sender: TObject);
var
  rZahl : array [0..9] of Integer;
  temp, i : Integer;
  Unique : Boolean;
  j : Integer;
begin
  txtRandoms.Clear;
  i := Low(rZahl);
  while i <= High(rZahl) do
  begin
    repeat
      Unique := True;
      temp := Random(10);
      for j := Low(rZahl) to Pred(i) do
        if rZahl[j] = temp then
        begin
          Unique := False;
          Break;
        end;
    until Unique;
    rZahl[i] := temp;
    txtRandoms.Text := txtRandoms.Text + IntToStr(rZahl[i]) + '; ';
    Inc(i);
  end;
end;

himitsu 30. Mär 2011 14:59

AW: FOR-Schleifen Problem
 
Zitat:

Zitat von delphinub23 (Beitrag 1091975)
Nein, eine Zugriffverletzung tritt nicht auf.

Geh mal in die Projektoptionen und aktiviere dort die Überlauf- und die Bereichsprüfung.

Und schon kommt deine Zugriffsverletzung.
Du hast nur Glück, daß an der falschen stelle, wo zu zugreifst zufällig etwas anderes liegt und es somit nicht gleich knallt.

Zitat:

Delphi-Quellcode:
except
  on E: Exception do
  begin
    // Irgendwo ein Fehler passiert? - 0-Array zurückgeben
    ZeroMemory(@Result, SizeOf(Result));
    raise E; // Exception nach oben weiter geben (benötigt??)
  end;
end;

Beim ZeroMemory, muß beachtet werden, da es hier auf dieses statische Array angepaßt ist ... also je nach Typ, muß es anders gelöst werden.
Zitat:

(benötigt??)
is besser so, auch wenn man es kürzen kann.

Delphi-Quellcode:
except
  ZeroMemory(@Result, SizeOf(Result));
  raise;
end;

rollstuhlfahrer 30. Mär 2011 16:40

AW: FOR-Schleifen Problem
 
Zitat:

Zitat von himitsu (Beitrag 1092016)
Beim ZeroMemory, muss beachtet werden, da es hier auf dieses statische Array angepaßt ist ... also je nach Typ, muß es anders gelöst werden.

Für dynamische Arrays würde ich ein
Delphi-Quellcode:
SetLength(<Array>, 0);
empfehlen.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.
Seite 3 von 3     123   

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