📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
function SplitString(const Source,ch:string):TStringList;//分割字符串函数
procedure Perround; //主处理过程
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.loadfromFile(openDialog1.filename);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Perround; //调用处理函数
Memo2.Lines.Add('0!');
end;
function TForm1.SplitString(const Source, ch: string): TStringList;
var
temp:String;
i:Integer;
begin
Result:=TStringList.Create;
//如果是空自符串则返回空列表
if Source=''
then exit;
temp:=Source;
i:=pos(ch,Source);
while i<>0 do
begin
Result.add(copy(temp,0,i-1));
Delete(temp,1,i);
i:=pos(ch,temp);
end;
Result.add(temp);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
IF SaveDialog1.Execute Then
Memo2.Lines.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.Perround;
var One,Two,No,Three:String;
i,j:integer;
ok,ok1:TStringList;
begin
ok:= TStringList.Create ; //初始化
ok1:=TStringList.Create ;
For i:=0 to Memo1.Lines.Count-1 Do
Begin
IF Copy(Memo1.lines[i],1,3)='STN' Then //处理重复STN问题
Begin
//处理附加数据行
IF Copy(Memo1.Lines[i+1],1,2)<>'BS' Then
Begin
Memo1.Lines.Delete(i+1);
PerRound;//递归调用循环体
Exit;
End;
//处理附加数据行结束
IF Memo2.Lines.Count>0 Then Memo2.Lines.Add('0!');
One:=copy(Memo1.Lines[i],9,Length(Memo1.Lines[i])-8);
ok:=SplitString(One,',') ;
Two:=copy(Memo1.Lines[i+1],9,Length(Memo1.Lines[i+1])-8);
ok1:=SplitString(two,',') ;
Memo2.Lines.Add('0s:'+ok[0]+':'+ok[1]+':'+ok1[0]);
For J:=I+2 DownTo 0 Do
Begin
Memo1.Lines.Delete(J);
End;
ok.Free;
ok1.Free;
PerRound;//递归调用循环体
exit;
End;
IF ODD(i) Then
Begin
No:=Copy(Memo1.Lines[i-1],9,Length(Memo1.Lines[i])-8);
ok:=SplitString(No,',') ; //分割奇数行
Three:=Copy(Memo1.Lines[i],9,Length(Memo1.Lines[i])-8);
ok1:=SplitString(Three,',') ; //分割偶数行
IF StrtoFloat(ok[1])=0 Then
Memo2.Lines.Add('00:'+ok.Strings[0]+'::'+ok.Strings[2]+': '+ok1[0]+': '+ok1[1]+': '+ok1[2]+':-9999:1:1:0:0::::')
Else
Memo2.Lines.Add('00:'+ok.Strings[0]+'::'+ok.Strings[2]+': '+ok1[0]+': '+ok1[1]+': '+ok1[2]+':'+ok[1]+':1:1:1:1::::');
Memo1.Lines[i-1]:= 'OK! '+Memo1.Lines[i-1];
Memo1.Lines[i]:= 'OK! '+Memo1.Lines[i];
End;
End;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Memo2.Lines.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -