📄 readilda.pas
字号:
unit ReadIlda;
interface
uses Classes;
type
TReadIldaFormat = class(TThread)
private
{ Private declarations }
FileName:String;
LoadIndex:Integer;
Counter :Integer;
Procedure RefreshForm;
protected
procedure Execute; override;
published
constructor CreateIt(FName:String);
destructor Destroy; override;
end;
implementation
uses Unit1, DataUnit,Sysutils;
Procedure TReadIldaFormat.RefreshForm;
Begin
Form1.Refresh;
End;
constructor TReadIldaFormat.CreateIt(FName:String);
Begin
inherited Create(True); // Create thread suspended
FileName:=FName;
Suspended := false; // Continue the thread
End;
destructor TReadIldaFormat.Destroy;
Begin
inherited destroy;
End;
procedure TReadIldaFormat.Execute;
Var
f:File;
Ild:array[0..3] of char;
Btt:Byte;
Btt1:array [0..1] of Byte;
Wrd:Word;
D3_D2:Integer;
FrameName:array[0..7] of char;
CompanyName:Array[0..7] of char;
i:integer;
NPoints:Word;
Eee:Integer;
begin
{ Place thread code here }
LoadIndex:=0;
Counter:=0;
MyShow.CountPoints:=0;
AssignFile(F,Filename);
FileMode := 0;
Reset(F,1);
Repeat
BlockRead(f,Ild,4);
if Ild='ILDA' Then
Begin
BlockRead(f,D3_D2,3);
BlockRead(f,D3_D2,1);
if (D3_D2 and $FF)=0 Then //3d
Begin
BlockRead(f,FrameName,8);
BlockRead(f,CompanyName,8);
BlockRead(f,Btt1,2); //nr point
TTransfer(NPoints)[0]:=Btt1[1];
TTransfer(NPoints)[1]:=Btt1[0];
if NPoints=0 Then Break;
BlockRead(f,Btt1,2); // Frame number
BlockRead(f,Btt1,2); // Nr of frames
BlockRead(f,Btt1,2); //Scanner head
SetLength(Data,NPoints); //data=2d
BlockRead(F,Data[0],NPoints*8,Eee);
if Eee<>(NPoints*8) Then Break;
TransferToMyOwnFormat (NPoints);
Counter:=Counter+1;
if Counter mod 15 =0 Then
End
Else
Begin //2d
BlockRead(f,FrameName,8);
BlockRead(f,CompanyName,8);
BlockRead(f,Btt1,2);
TTransfer(NPoints)[0]:=Btt1[1];
TTransfer(NPoints)[1]:=Btt1[0];
if NPoints=0 Then Break;
BlockRead(f,Btt1,2);
BlockRead(f,Btt1,2);
BlockRead(f,Btt1,2);
SetLength(Data1,NPoints); //data1 = 3d
BlockRead(F,Data1[0],NPoints*6,Eee);
if Eee<>(NPoints*6) Then Break;
Transfer3DToMyOwnFormat (NPoints);
Counter:=Counter+1;
if Counter mod 15 =0 Then
End;
End
Else Seek(F,FilePos(F)-3);
until Eof(F);
CloseFile(F);
ShowFileName:=ExtractFileName(FileName);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -