Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriffsverletzung bei Inc() (https://www.delphipraxis.net/30570-zugriffsverletzung-bei-inc.html)

Neutral General 26. Sep 2004 16:00


Zugriffsverletzung bei Inc()
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei dieser Procedure bekomme ich eine Zugriffsverletzung (Anhang)
direkt beim Start (Wann auch sonst :wink: ) auftritt. Ich weis nicht was dazu führt ...
Normalerweise müsste das doch gehen, oder ?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i,j : Integer;
begin
for i := 0 to 25 do begin
 for j := 0 to 31 do begin
  Spielfeld[Feld] := TSpielfeld.Create(Self);
   with Spielfeld[Feld] do begin
    Parent := Form1;
    Left := i*38 + 20;
    Top := j*18 + 10;
    Autosize := true;
    Cursor := crHandPoint;
    Hint := ' ';
    OnClick := Imageladen;
    OnMouseMove := ShowHint2;
    Nr := Feld;
   end;
  inc(Feld);
 end;
end;
end;

fkerber 26. Sep 2004 16:02

Re: Zugriffsverletzung bei Inc()
 
Hi!

Was ist denn Feld und was ist Spielfeld?

Ciao Frederic

Neutral General 26. Sep 2004 16:04

Re: Zugriffsverletzung bei Inc()
 
Delphi-Quellcode:
type
  TSpielfeld = class(TImage)
  private
   Nr : Integer;
end;

var
Spielfeld : Array[0..150] of TSpielfeld;
Feld : Integer;

fkerber 26. Sep 2004 16:06

Re: Zugriffsverletzung bei Inc()
 
Hi!

Ich denke mal, dass du Feld zuerst mal intialisieren musst.
Daran könnte es liegen.

Ciao Frederic

Luckie 26. Sep 2004 16:08

Re: Zugriffsverletzung bei Inc()
 
Setz mal die Länge des Arrays mit [oh}SetLenght[/oh].

Robert Marquardt 26. Sep 2004 16:08

Re: Zugriffsverletzung bei Inc()
 
Mach Feld lokal, dann wird dir auffallen das du Feld nicht am Anfang auf Null setzt.
Warum machst du Spielfeld nicht zweidimensional?

Neutral General 26. Sep 2004 16:09

Re: Zugriffsverletzung bei Inc()
 
1. Wie soll ich das machen ?
2. Ohne inc(Feld) Funktioniert es ...
ich habe dann aber nur Spielfeld[0]'s,
was ich nicht will ...

fkerber 26. Sep 2004 16:11

Re: Zugriffsverletzung bei Inc()
 
Hi!

Ich würde es so machen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i,j,feld : Integer;
begin
feld:=0;
for i := 0 to 25 do
 begin
   for j := 0 to 31 do
    begin
      Spielfeld[Feld] := TSpielfeld.Create(Self);
      with Spielfeld[Feld] do
        begin
         Parent := Form1;
         Left := i*38 + 20;
         Top := j*18 + 10;
         Autosize := true;
         Cursor := crHandPoint;
         Hint := ' ';
         OnClick := Imageladen;
         OnMouseMove := ShowHint2;
         Nr := Feld;
        end;
      inc(Feld);
    end;
 end;
end;
Ciao Frederic

Neutral General 26. Sep 2004 16:17

Re: Zugriffsverletzung bei Inc()
 
@ fkerber : Bei deiner Lösung gibt es die gleiche Meldung :(
Wie muss ich das Array initialisieren ?

@ Luckie : Kannst du mir bitte ein Beispiel geben ... ich weis nämlich nicht wie man die
Länge eines Arrays setzt.

fkerber 26. Sep 2004 16:33

Re: Zugriffsverletzung bei Inc()
 
Hi!

ich vermute mal, dein Array ist zu klein definiert.
Probier es mal so:

Delphi-Quellcode:
var
  Form1: TForm1;
  Spielfeld : Array[0..832] of TSpielfeld;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i,j,feld : Integer;
begin
feld:=0;
for i := 0 to 25 do
 begin
   for j := 0 to 31 do
    begin
      Spielfeld[Feld] := TSpielfeld.Create(Self);
      with Spielfeld[Feld] do
        begin
         Parent := Form1;
         Left := i*38 + 20;
         Top := j*18 + 10;
         Autosize := true;
         Cursor := crHandPoint;
         Hint := ' ';
         OnClick := Imageladen;
         OnMouseMove := ShowHint2;
         Nr := Feld;
        end;
      inc(Feld);
    end;
 end;
end;
Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.
Seite 1 von 2  1 2      

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