AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zugriffsverletzung bei if in einer for-Schleife
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei if in einer for-Schleife

Ein Thema von TurboMartin · begonnen am 16. Mai 2006 · letzter Beitrag vom 18. Mai 2006
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#1

Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 15:30
Hi Leute,
ich hab folgenden Code:
Delphi-Quellcode:
var I: Integer;
    Image: Array[1..13] of TImage;
begin
  for I := 0 to 12 do
    if (Image[I+1].Top = 96) and (Image[I+1].Left = 8) then Image[I+1].Top := 48
    else if (Image[I+1].Top = 48) and (Image[I+1].Left = 536) then Image[I+1].Top := 96
         else if (Image[I+1].Top = 96) and (Image[I+1].Left = 536) then Image[I+1].Top := 144
              else if (Image[I+1].Top = 144) and (Image[I+1].Left >= 9)then Image[I+1].Left := Image[I+1].Left - 8
                   else if (Image[I+1].Top = 144) and (Image[I+1].Left = 8) then Image[I+1].Top := 96
                        else Image[I+1].Left := Image[I+1].Left + 8;

end;

allerdings krieg ich in der forschleife schon beim zweiten mal Image[I+1] (Image[I+1].Left = 8) eine zugriffsverletzung, die sich dauernd wiederholt(durch die schleife). was mache ich falsch???
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 15:33
Kanns sein, dass du die Objekte nicht erstellt hast?
Da sollte für jedes Objekt eine Instanz von TImage zugewiesen werden.
Benjamin
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 15:34
ich hab alle erstellt
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 15:35
aehm, hast Du schonmal irgendwo

Image[0].create oder ähnliches gemacht

ansonsten sind Deine Instanzen von TImage nicht existend.


Zeig uns doch mal etwas mehr Code.
So ist anzunehmen das sich alles in einer Prozedur/Methode abspielt
und Du mit einem lokalem Array of TImage arbeitest.

Grüße
Klaus

[edit] war wieder einer schneller, aber sehe ich auch so [/edit]
Klaus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 15:38
Zitat:
ich hab alle erstellt
Wo? Kann es sein das du Image doppelt deklariert hast? Du verwendest aber die lokal definierte Version und diese hat lauter leere Referenzen. Falls du auf höhrerer Ebene einen anderen Array mit dem Namen Image hast, entferne die lokale Version.
Markus Kinzler
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 15:38
Zitat von TurboMartin:
ich hab alle erstellt
Das sieht in deinem Code da oben aber nicht so aus...
Benjamin
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 17:48
also, bisher war nicht dabei, drum hier das ganze. also das ding ist für physik
Angehängte Dateien
Dateityp: zip solar_143.zip (791,9 KB, 8x aufgerufen)
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 17:56
Delphi-Quellcode:
 TForm1 = class(TForm)
    Timer1: TTimer;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    Image10: TImage;
    Image11: TImage;
    Image12: TImage;
    Image13: TImage;
    Image14: TImage;
    Image15: TImage;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var I: Integer;
    Image: Array[1..13] of TImage;
begin
  for I := 0 to 12 do
    if (Image[I+1].Top = 96) and (Image[I+1].Left = 8) then Image[I+1].Top := 48
    else if (Image[I+1].Top = 48) and (Image[I+1].Left = 536) then Image[I+1].Top := 96
         else if (Image[I+1].Top = 96) and (Image[I+1].Left = 536) then Image[I+1].Top := 144
              else if (Image[I+1].Top = 144) and (Image[I+1].Left >= 9)then Image[I+1].Left := Image[I+1].Left - 8
                   else if (Image[I+1].Top = 144) and (Image[I+1].Left = 8) then Image[I+1].Top := 96
                        else Image[I+1].Left := Image[I+1].Left + 8;

end;
Dein Image1 aus der Interfacekonfiguration ist nicht gleich image[i+1] wenn i = 0.
Das mußt Du dann anders lösen, wenn ich mich recht erinnere geht das mit FindComponent,
aber da wissen andere besser drüber Bescheid.
Kannst Dir mal diesen Thread anschauen, ähnliches Problem wie Deines http://www.delphipraxis.net/internal...=findcomponent

Eine andere Möglichkeit ist, Du erstellst Dir die Images zur Laufzeit.
Dann kannst Du die Arraystruktur verwenden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 20:00
Also so:
Delphi-Quellcode:
var I: Integer;
    Image: Array[1..13] of TImage;
begin
  for I := 0 to 12 do
    if (FindComponent(Image[I+1]).Top = 96) and (FindComponent(Image[I+1])Left = 8) then FindComponent(Image[I+1]).Top := 48
    else if (FindComponent(Image[I+1]).Top = 48) and (FindComponent(Image[I+1]).Left = 536) then FindComponent(Image[I+1]).Top := 96
         else if (FindComponent(Image[I+1]).Top = 96) and (FindComponent(Image[I+1]).Left = 536) then FindComponent(Image[I+1]).Top := 144
              else if (FindComponent(Image[I+1]).Top = 144) and (FindComponent(Image[I+1]).Left >= 9)then FindComponent(Image[I+1]).Left := FindComponent(Image[I+1]).Left - 8
                   else if (FindComponent(Image[I+1]).Top = 144) and (FindComponent(Image[I+1]).Left = 8) then FindComponent(Image[I+1]).Top := 96
                        else FindComponent(Image[I+1]).Left := FindComponent(Image[I+1]).Left + 8;

end;
oder wie?
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#10

Re: Zugriffsverletzung bei if in einer for-Schleife

  Alt 16. Mai 2006, 20:08
Delphi-Quellcode:
for i:= 1 to 13 do begin
  if (FindComponent("Image"+IntToStr(i)).Left = 96) and //...
So ungefähr, der Rest sollte dann einfach sein
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 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