1. Читать через TFileStream
2. Перед чтением надо память выделять
Как-то так:
Код:
type
TSTLItem = record
nv:single
tx:single
ty:single
tz:single
tc:word
end;
TSTLStruct = record
Comm : AnsiString;
Count : DWORD;
Items : Array Of TSTLItem;
end;
procedure ReadSTLFile(FileName : String; var Data : TSTLStruct);
var
I : Integer;
F : TFileStream;
begin
F := TFileStream.Create(FileName, fmOpenRead);
Try
SetLength(Data.Comm,80);
F.ReadBuffer(Data.Comm[1],80);
F.ReadBuffer(Data.Count,sizeOf(DWORD));
SetLength(Data.Items,Data.Count);
For I := 0 To Data.Count-1 Do
Begin
F.ReadBuffer(Data.Items[i].nv,SizeOf(Single));
// Здесь читаем остальные поля текущего треугольника
End;
Finally
F.Free;
end;
end;