Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Zugriffsverletzung?? (https://www.delphipraxis.net/160025-zugriffsverletzung.html)

himitsu 23. Apr 2011 19:39

AW: Zugriffsverletzung??
 
Delphi-Quellcode:
for i := 1 to 20 do
begin
  Star[i] := TStart.Create; // man könnte sich glatt fragen, wie du den mehrfachen Hinweis mehrer Leute überlesen konntest
  Star[i].PosX := StrToInt(MemoLoadPos.Lines[i * 2]);
  Star[i].PosY := StrToInt(MemoLoadPos.Lines[i * 2 + 1]);
end;
bzw., da nur die ersten 6 befüllt werden
Delphi-Quellcode:
for i := 1 to 20 do
  Star[i] := TStart.Create;
for i := 1 to 6 do
begin
  Star[i].PosX := StrToInt(MemoLoadPos.Lines[i * 2]);
  Star[i].PosY := StrToInt(MemoLoadPos.Lines[i * 2 + 1]);
end;

Zibelas 23. Apr 2011 19:41

AW: Zugriffsverletzung??
 
das war himitsu schneller als ich^^

Grundsätzlich kann man alles in einer Schleife abarbeiten, wenn der Code sehr ähnlich ist.

Michelle 23. Apr 2011 20:06

AW: Zugriffsverletzung??
 
Wow, ihr habt meine über 100 Zeilen gerade auf 5 reduziert :) Ich muss wohl noch eine Menge lernen, wenn es ums Programmieren geht! Vielen, vielen Dank nochmal für eure kompetente, schnelle und freundliche Hilfe!!!

Sir Rufo 23. Apr 2011 20:38

AW: Zugriffsverletzung??
 
Zitat:

Zitat von Michelle (Beitrag 1096680)
Wow, ihr habt meine über 100 Zeilen gerade auf 5 reduziert :) Ich muss wohl noch eine Menge lernen, wenn es ums Programmieren geht! Vielen, vielen Dank nochmal für eure kompetente, schnelle und freundliche Hilfe!!!

Beim Programmieren gibt es u.a. eine Regel die da abgekürzt lautet DRY = Don't Repeat Yourself

Immer dann, wenn man sich wiederholt, kann man es besser schreiben ;)

Jumpy 26. Apr 2011 09:56

AW: Zugriffsverletzung??
 
Zitat:

Zitat von Michelle (Beitrag 1096674)
Wow, super Tipp, vielen Dank! Davon habe ich noch nie gehört, aber das ist wirklich eine viel bessere Lösung!!
Denkst du, man kann aus dem Rest auch eine Schleife machen?

Code:
 
  Star[1].PosX := StrToInt(MemoLoadPos.Lines[2]);
  Star[1].PosY := StrToInt(MemoLoadPos.Lines[3]);

  Star[2].PosX := StrToInt(MemoLoadPos.Lines[4]);
  Star[2].PosY := StrToInt(MemoLoadPos.Lines[5]);

  Star[3].PosX := StrToInt(MemoLoadPos.Lines[6]);
  Star[3].PosY := StrToInt(MemoLoadPos.Lines[7]);

  ...
Star[i].PosX müsste von 1 bis 20 gehen, MemoLoadPos.Lines[i] von 2 bis 42. Geht das?


In einer Schleife von i:=1 bis 20:
Delphi-Quellcode:
  Star[i].PosX := StrToInt(MemoLoadPos.Lines[2*i]);
  Star[i].PosY := StrToInt(MemoLoadPos.Lines[2*i+1]);


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