![]() |
Re: Zugriffsverletzung bei if in einer for-Schleife
sie meinten es so:
Delphi-Quellcode:
Ich hab mir erlaubt es zu formatieren
var I: Integer;
begin for I := 1 to 13 do begin with (FindComponent('Image' + IntToStr(I)) as TImage) do begin if (Top = 96) and (Left = 8) then Top := 48 else if (Top = 48) and (Left = 536) then Top := 96 else if (Top = 96) and (Left = 536) then Top := 144 else if (Top = 144) and (Left >= 9) then Left := Left - 8 else if (Top = 144) and (Left = 8) then Top := 96 else Left := Left + 8; end; end; end; |
Re: Zugriffsverletzung bei if in einer for-Schleife
danke dafür, aber ich hab jetzt wieder ein problem.
Delphi-Quellcode:
beim end fon der forschleife(die mit J), komm der error:
procedure TForm1.Timer1Timer(Sender: TObject);
var I: Integer; J: Integer; begin for I := 1 to 13 do begin if (for J := 1 to 13 do begin (((FindComponent('Image' + IntToStr(J)) as TImage).Left) >= ((FindComponent('Image' + IntToStr(I)) as TImage).Left + 8)) end;) then ((FindComponent('Image' + IntToStr(I)) as TImage).Left) := (FindComponent('Image' + IntToStr(I)) as TImage).Left else if ((FindComponent('Image' + IntToStr(I)) as TImage).Top = 96) and ((FindComponent('Image' + IntToStr(I)) as TImage).Left = 8) then (FindComponent('Image' + IntToStr(I)) as TImage).Top := 48 else if ((FindComponent('Image' + IntToStr(I)) as TImage).Top = 48) and ((FindComponent('Image' + IntToStr(I)) as TImage).Left = 536) then (FindComponent('Image' + IntToStr(I)) as TImage).Top := 96 else if ((FindComponent('Image' + IntToStr(I)) as TImage).Top = 96) and ((FindComponent('Image' + IntToStr(I)) as TImage).Left = 536) then (FindComponent('Image' + IntToStr(I)) as TImage).Top := 144 else if ((FindComponent('Image' + IntToStr(I)) as TImage).Top = 144) and ((FindComponent('Image' + IntToStr(I)) as TImage).Left >= 9) then (FindComponent('Image' + IntToStr(I)) as TImage).Left := (FindComponent('Image' + IntToStr(I)) as TImage).Left - 8 else if ((FindComponent('Image' + IntToStr(I)) as TImage).Top = 144) and ((FindComponent('Image' + IntToStr(I)) as TImage).Left = 8) then (FindComponent('Image' + IntToStr(I)) as TImage).Top := 96 else (FindComponent('Image' + IntToStr(I)) as TImage).Left := (FindComponent('Image' + IntToStr(I)) as TImage).Left + 8; end; end; Statement expected, but expression of 'Boolean' found. was muss ich ändern? |
Re: Zugriffsverletzung bei if in einer for-Schleife
Delphi-Quellcode:
Da ist das "if (" zu viel...wenn das weg ist müsste es gehen!
if (for J := 1 to 13 do
Flare |
Re: Zugriffsverletzung bei if in einer for-Schleife
btw: FindComponent würd ich nicht in nen Timer packen. (FindComponent braucht seine Zeit)
Such dir deine Bildchen beim Start (OnCreate) mit FindComponent zusammen und wirf sie dann in dein/ein Array. Danach kannste gemütlich/einfach mit dem array arbeiten.
Delphi-Quellcode:
For i := 1 To 13 Do bildchen[i] := TImage(FindComponent('Image' + IntToStr(i)));
|
Re: Zugriffsverletzung bei if in einer for-Schleife
@Flare: aber ich muss es prüfen.
wie soll man sonst sehen, ob wenn er sich bewegt nicht ein anderes bild "rammt"? -- @TeronG: aber wie bringe ich die for schleife unter? |
Re: Zugriffsverletzung bei if in einer for-Schleife
Dann solltest du überlegen, ob diese Art von Kollisionsabfrage eine geeignete ist :mrgreen:
Die abfrage sollte also nicht genau an dieser Stelle stehen... Flare |
Re: Zugriffsverletzung bei if in einer for-Schleife
wieso nicht? wenn es sich bewegt hat auf ein anderes ist es zu spät. :wiejetzt: :shock: :?
|
Re: Zugriffsverletzung bei if in einer for-Schleife
Ich kapier gerade nicht, wie du mit diesem Fetzen Quellcode eine Kollisionsabfrage realisieren möchtest. Immerhin werden die Images auf jeden Fall bewegt, egal ob die sich übershcneiden oder nicht. Von der Kollisionsabfrage hast du bisher noch nichts reingebracht.
Flare |
Re: Zugriffsverletzung bei if in einer for-Schleife
Zitat:
Delphi-Quellcode:
und dann die for schleife einfach in FormCreate "reinwerfen" ...
var
Form1: TForm1; Image : array [1..5] of TImage; :gruebel: das sollts eigentlich gewesen sein .. |
Re: Zugriffsverletzung bei if in einer for-Schleife
und wie würdest du die abfrage machen? ich weiß nicht, wie sonnst. :wiejetzt:
@TeronG: die soll ja immer ausgeführt werden die schleife. die bilder sollen ja nicht aufeinander"fahren". |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz