Einzelnen Beitrag anzeigen

Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#1

array of record -> Zugriffsverletzung beim Lesen

  Alt 31. Mär 2008, 15:17
Hallo,

ich habe folgendes Problem: Mein Programm ändert in einem Array von Record's ein paar Werte. Das funktioniert soweit, kann ich mir in der Mainunit mit dem ObjectInspector ansehen. Leider kann ich im Programm nicht auf die Werte zugreifen


in meiner eigenen Unit steht u.a.:
Delphi-Quellcode:
type
 dot = record
          x: double;
          y: double;
         { .... }
          end;
 layer = array [1..(size*size)] of dot;

-> die Verarbeitung der layers erfolgt über pointer, die von der mainunit aus zeigen
und in der mainunit:
Delphi-Quellcode:
var
{ .... }
 llayer: layer;
implementation

procedure TForm1.Button1Click(Sender: TObject);
var x,y:Integer;
   zahl: Int64;
begin
randomize;
myunit:=Tmyunit.create;
myunit.initlayer(@llayer);

zahl:=0;
while zahl<size*size do
    begin
    zahl:=zahl+1;
     if (llayer[zahl].x=5) then {...}
 [edit] fehler beim kopieren gemacht, sorry . vorher stand hier: if (layer[zahl].x=5) then [/edit]
der genaue Fehler lautet (beim durchlaufen der if-frage im main):
Project Project1.exe raised exception class EAccessViolation with message 'Access Violation at adress 004749D2 in module 'Project1.exe'.
Read of adress 00000010'. Process stopped. Use Step or Run to continue.


Alle Änderungen, die ich in meiner Unit machen, entsprechen dem, wie es sein soll. Ohne Fehler oder ähnliches. Eben nur, wenn ich in der Unit, in der ich mein Array definiert habe, funktioniert es nicht mehr.

Habe jetzt schon versucht, einen Zeiger auf das Auszulesende Objekt zu machen, kommt aber derselbe Fehler. (ich nutze Delphi7 Professional)
  Mit Zitat antworten Zitat