【delphi开源代码栏目提醒】:网学会员--在 delphi开源代码编辑为广大网友搜集整理了:FatureManage.pas绩等信息,祝愿广大网友取得需要的信息,参考学习。
unit FatureManage;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,math;
type
NumCharPattern = record
Num: integer;
FeatureDetail: array[0..500,1..20] of real;
end;
type
TFeature = class
private
Featuretype: array [0..500,0..63] of integer;
class function GetSubStr(var aString:String;SepChar:String):String;
class function GetSubStrNum(aString:String;SepChar:String):integer;
public
class procedure SaveToFile();
class procedure Openfile();
class function LestFeatureCompare():double;
end;
var
Featurestr:array [1..7] of real;
DefectType:integer;
t1,t2:array [1..15] of double;
implementation
uses CHILDWIN;
////////////////////////////////////////////////////////////
class procedure TFeature.SaveToFile();
var //记录每个缺陷的各个特征值
n,i,j,k,Number:integer;
SepChar:String;
PatternFile:TextFile;
pathstring:string;
begin
PathString:=ExtractFilePath(Application.ExeName)+'pattern\fature.txt';
Assignfile(PatternFile,PathString);
ReWrite(PatternFile);//写文件
SepChar:=' ';
for Number := 0 to 3 do //记录缺陷种类'0'到'3'的各特征值数据
if Pattern[Number].Num=0 then
begin
Writeln(PatternFile,IntToStr(Number)); //记录具体的缺陷种类
Writeln(PatternFile,IntToStr(0)); //记录该缺陷种类的个数
end
else if Pattern[Number].Num<>0 then
begin
Writeln(PatternFile,IntToStr(Number)); //记录具体的缺陷种类
Writeln(PatternFile,IntToStr(pattern[Number].Num)); //记录该缺陷种类的个数
for k:=1 to Pattern[Number].Num do
begin //记录每个缺陷的1*15的具体特征值
Writeln(PatternFile,FloatToStr(pattern[Number].FeatureDetail[k][1]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][2]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][3]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][4]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][5]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][6]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][7]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][8]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][9]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][10]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][11]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][12]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][13]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][14]),
SepChar,FloatToStr(Pattern[Number].FeatureDetail[k][15]),
SepChar);
end;
end;
CloseFile(PatternFile);//关闭文件
end;
//////////////////////////////////////////////////////////////////////////////////
class procedure TFeature.Openfile();
var //读取每个缺陷类的各个模板特征
i,j,SubStrAmout,t,k:Integer;
Number,TotalOfOneDigital:integer;
ThisLine,sNumber,sTotal,SepChar,sFeatureCode,pathstring: string;
item: array [1..20] of string;
PatternFile:TextFile;
begin
Try
begin //确定特定路径的固定的文件名
PathString:=ExtractFilePath(Application.ExeName)+'pattern\fature.txt';
AssignFile(PatternFile,PathString);
Reset(PatternFile);
SepChar:=' ';//定义分格符
While not Eof(PatternFile)do
begin //读取具体的缺陷类
ReadLn(PatternFile,sNumber);//读取具体的类数
Number:=StrToInt(sNumber);
ReadLn(PatternFile,sTotal); //读取具体的类的模板个数
TotalOfOneDigital:=StrToInt(sTotal);
if TotalOfOneDigital <> 0 then
begin
Pattern[Number].num:=TotalOfOneDigital;
for k:=1 to TotalOfOneDigital do //每个缺陷类的模板总数
begin
ReadLn(PatternFile,sFeatureCode);
ThisLine:=sFeatureCode;
SubStrAmout:=GetSubStrNum(ThisLine,SepChar);
for t:=1 to SubStrAmout do
Item[t]:=GetSubStr(ThisLine,SepChar); //被分隔的特征字符数组
for i:=1 to 15 do
Pattern[Number].FeatureDetail[k][i]:=StrToFloat(Item[i]);
end;
end;
end;
end;
CloseFile(PatternFile);//关闭文件
Finally
end;
end;
///////////////////////////////////////////////////////////////////////
class function TFeature.GetSubStr(var aString:String;SepChar:String):String;
var //得到分隔字符的子程序
SingleChar:String;
StrLen:Integer;
SepCharPos:Integer;
begin
StrLen:=Length(aString);
SepCharPos:=Pos(SepChar,aString); //计算分割符在子串中的位置