Ich habe ein kleines Programm erstellt, welches beim Klick auf einen Button eine TXT Datei einliest, und u.a. die darin enthaltenen Daten in einem 2D Array zurückliefert.
Nun möchte ich diese einfach in einem Memo ausgeben. Dazu habe ich eine kleine Prozedur erstellt, die nun selbst nochmal eine 2. Prozedur aufrufen soll welche mit diesen Daten ein wenig rechnet. Beim Aufruf dieser 2. Prozedur hakt es nun -> "Identifier not found"
In etwa so:
Wobei es mir eher um das Prinzip als um die konkreten Funktionen hier geht :
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
StrListERG: TStringList;
begin
if OpenDialog1.Execute then
begin
ZeissERG := TClassZeissERG.Create;
StrListERG := TStringList.Create;
try
StrListERG.LoadFromFile(UTF8TOAnsi(OpenDialog1.Filename));
except
begin
StatusBar1.Panels[0].Text := 'Kann das File nicht laden';
DataLoaded[erg] := False;
end;
end;
StatusBar1.Panels[0].Text := 'Erfolgreich geladen';
ERGValues := ZeissERG.Analyse(StrListERG); // Aufruf der Klassenfunktion funktioniert problemlos
printArray2D(ERGValues.Data); // Aufruf der Prozedur im Mainform -> Funktioniert
end
else
begin
StatusBar1.Panels[2].Text := ERGValues.ErrorText;
end;
// Aufräumen, Aufgerufene Klasse und Stringlist
FreeAndNil(ZeissERG);
FreeAndNil(StrListERG);
end;
Code: Alles auswählen
Procedure printArray2D(Data: TStringArray2D);
var
i, j, k: integer;
a, b, c: string;
begin
for i := low(Data) to high(Data) do
begin
for j := low(Data[i]) to high(Data[i]) do
begin
a := a + 'i=' + IntToStr(i) + ' j=' + IntToStr(j) + ': ' + Data[i][j]+' - ';
end;
Form1.Memo1.Lines.Add(a);
a := '';
CalcDistance( i, Data ); // Aufruf der 2. Prozedur -> Fehlermeldung
end;
end;
Procedure CalcDistance( start: integer; Data: TStringArray2D );
var
i, j, k: integer;
a, b, c: string;
d0, s0, x0, y0, z0 : double; // Die erste Kugel
d1, s1, x1, y1, z1 : double; // Die zweite Kugel
m, n : double; // Berechnete Werte
begin
a := '';
// Startkugel
x0 := StrToFloat( Data[start][1] ); // X Koordinate
y0 := StrToFloat( Data[start][2] ); // Y Koordinate
z0 := StrToFloat( Data[start][3] ); // Z Koordinate
d0 := StrToFloat( Data[start][4] ); // Kugeldurchmesser
s0 := StrToFloat( Data[start][0] ); // Sollwert
// Endkugel
x1 := StrToFloat( Data[start+1][1] ); // X Koordinate
y1 := StrToFloat( Data[start+1][2] ); // Y Koordinate
z1 := StrToFloat( Data[start+1][3] ); // Z Koordinate
d1 := StrToFloat( Data[start+1][4] ); // Kugeldurchmesser
s1 := StrToFloat( Data[start+1][0] ); // Sollwert
m := sqrt( sqr( x1 - x0) + sqr( y1 - y0) + sqr( z1 - z0) ); // Distanz im Raum
n := s1 - m; // Sollwert minus Istwert Abstand
a := a + 'Sollwert =' + FloatToStr(s1) +
' Istwert =' + FloatToStr(m) +
' Differenz: ' + Data[i][j];
Form1.Memo1.Lines.Add(a);
Form1.Memo1.Lines.Add(' ');
end;
Code: Alles auswählen
Procedure printArray2D(Data: TStringArray2D);
Code: Alles auswählen
Procedure Form1.printArray2D(Data: TStringArray2D);
Sorry für diese Frage, aber ich kapiere es einfach nicht.