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)