Guten Abend Leute und danke für die Codes, Bummi.
Um Parameter "Dreiecke" (array of TDreieck) von dynamischem Array in Typ von "TList" umzuwandeln, habe ich original code von Klaus wie folgendes umgeschrieben:
Delphi-Quellcode:
type
TVektor =
record
x, y, z: real;
end;
TDreieck =
record
n: TVektor;
// n ist Normalvektor
p:
array[1..3]
of TVektor;
//p hat Koordinaten von 3 Eckpunkten
end;
Var
hDreieck:^TDreieck;
//von mir zugefügt!!!
//Dreiecke:Array of TDreieck;
Dreiecke: TList;
//von mir zugefügt!!!
PROCEDURE TMain.Test;
const
recstart='
facet normal';
recline='
vertex';
var list:TStrings; line:integer; data:TDreieck;
FUNCTION FindLine(
const s:
string; raiseerr:boolean):boolean;
begin
while (line<list.count)
and (Copy(Trim(list[line]),1,Length(s))<>s)
do inc(line);
if line<list.count
then result:=true
else if not raiseerr
then result:=false
else raise Exception.Create(s+'
nicht gefunden.');
end;
FUNCTION ReadNumber(
const s:
string;
var i:integer):real;
var j:integer;
begin
j:=i;
while s[j]<>'
'
do dec(j);
result:=StrToFloat(Copy(s,j+1,i-j));
while s[j]='
'
do dec(j);
i:=j;
end;
PROCEDURE ReadLine(
var v:TVektor);
var s:
string; i:integer;
begin
s:=Trim(list[line]);
i:=Length(s);
v.z:=ReadNumber(s,i);
v.y:=ReadNumber(s,i);
v.x:=ReadNumber(s,i);
inc(line);
end;
PROCEDURE ReadRecord;
var i:integer;
begin
//ReadLine(data.n);
ReadLine(hDreieck^.n);
//von mir zugefügt!!!
for i:=1
to 3
do begin
FindLine(recline,true);
//ReadLine(data.p[i]);
ReadLine(hDreieck^.p[i]);
//von mir zugefügt!!!
end;
//SetLength(Dreiecke,Length(Dreiecke)+1);
//Dreiecke[High(dreiecke)]:=data;
Dreiecke.Add(hDreieck);
//von mir zugefügt!!!
end;
// var f:TextFile; i,j:integer; // nur zur Kontrolle benutzt
begin
//Dreiecke:=nil; //von mir gelöscht
list:=TStringList.Create;
try
try
list.text:=Clipboard.AsText;
// oder List.LoadFromFile('Filename');
line:=0;
while FindLine(recstart,false)
do ReadRecord;
except
On E:
Exception do begin
ShowMessage(E.
Message);
//Dreiecke:=nil; //von mir gelöscht
end;
end;
finally
list.free;
end;
end;
Ich bin nicht sicher, ob das Programm richtig ist, und evtl. s.g "Memory Leaks" vorhanden ist, weil the Codes der Ausgabe in Log.txt ich noch nicht umgeschrieben habe und auch nicht probieren kann.
Ich bin sehr dankbar für weitere Hilfe und nützliche Hinweise
Gruss
Lee