Показать сообщение отдельно
  #2  
Старый 12.08.2016, 03:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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;
Ответить с цитированием