Guten Tag Zusammen,
die original Ausgabe-Code (in Log.txt) von Klaus funktioniert jetzt schon (besonders "
with hDreieck(Dreiecke[i])^ do begin""), hab ich gerade schon probiert, jedoch muss man
hDreieck = ^TDreieck; am Anfang des Programms unter Type erklären, aber nicht innerhalb von Ausgabe-Code, also nicht innerhalb von procedure CopyDreiecke(tofile:boolean)
Delphi-Quellcode:
procedure CopyDreiecke(tofile:boolean);
var list:TStrings;
function ToStr(v:real):
String;
begin
result:=FloatToStrF(v,ffExponent,7,3)+'
';
if result[1]<>'
-'
then result:='
'+result;
end;
procedure AddVector(
const v:TVektor);
type TxVector=Array[0..2]
of real;
var s:
string; i:integer;
begin
for i:=0
to High(TxVector)
do s:=s+ToStr(TxVector(v)[i]);
list.Add(s);
end;
var i,j:integer;
begin
list:=TStringList.Create;
try
try
//if Length(Dreiecke)=0 then
if Dreiecke.Count=0
then
raise Exception.Create('
Dreiecke ist leer.');
//for i:=0 to High(Dreiecke) do
for i:=0
to Dreiecke.Count-1
do
//with Dreiecke[i] do begin
with hDreieck(Dreiecke[i])^
do begin
AddVector(n);
for j:=Low(p)
to High(p)
do AddVector(p[j]);
list.Add('
');
end;
if tofile
then list.SaveToFile(ExtractFilePath(ParamStr(0))+'
Log.txt');
//else Clipboard.AsText:=List.Text;
ShowMessage('
fertig.');
except
On E:
Exception do ShowMessage(E.
Message);
end;
finally
list.free;
end;
end;
Nun neue Probleme: die in Log.txt ausgegebenen/gespeicherten Koordinaten stimmen mit original Koordinaten in *.stl nicht überein, wo können die Fehler liegen?
Delphi-Quellcode:
.
.
.
PROCEDURE ReadRecord;
var i:integer;
begin
//ReadLine(data.n);
ReadLine(hDreieck^.n);
//von mir umgeschrieben!!!
for i:=1
to 3
do begin
FindLine(recline,true);
//ReadLine(data.p[i]);
ReadLine(hDreieck^.p[i]);
//von mir umgeschrieben!!!
end;
//SetLength(Dreiecke,Length(Dreiecke)+1);
//Dreiecke[High(dreiecke)]:=data;
Dreiecke.Add(hDreieck);
//von mir umgeschrieben!!! Vielleicht HIER fehlt noch etwas
end;
begin
//Dreiecke:=nil; //von mir gelöscht, sonst kriege ich "Access Violation..."
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;
end;
end;
finally
list.free;
end;
end;
Gruss
Lee