⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 llowf.~pas

📁 不完备信息的数据发现
💻 ~PAS
字号:
unit llowf;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Tlow = class(TForm)
    Memo6: TMemo;
    Memo7: TMemo;
    Memo8: TMemo;
    Button2: TButton;
    GOOD: TLabel;
    POOR: TLabel;
    Label1: TLabel;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Memo4: TMemo;
    Memo5: TMemo;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  low: Tlow;
  def: Tdef;
  a: array[0..5, 0..3] of string;
  i, j, k: integer;
  DataVar: TDataVar;
  DataVar1: TDataVar;
  DataVar2: TDataVar;
  DataVar3: TDataVar;
  DataVar4: TDataVar;
  str, str_temp: string;
  wz, lenth, m: integer;
 implementation

{$R *.dfm}
uses dm, lproductex;

procedure Tdef.FormCreate(Sender: TObject);
var i:integer;
begin
 Q_productinfo.Close;
 Q_productinfo.SQL.Text:='select * FROM '+DatabaseName+'decision ';
 Q_productinfo.Open;
 Q_productinfo.First;
 i:=0;
 while not Q_productinfo.Eof do
 begin
  a[i][0]:=Q_productinfo.FieldByName('price').asstring;
  a[i][1]:=Q_productinfo.FieldByName('Mileage').asstring;
  a[i][2]:=Q_productinfo.FieldByName('size').asstring;
  a[i][3]:=Q_productinfo.FieldByName('Max-speed').asstring;
  i:=i+1;
  if i=6 then break;
  Q_productinfo.Next;
 end;

  DataVar := compact1;
  DataVar1 := compact(0);
  DataVar2 := compact(1);
  DataVar3 := compact(2);
  DataVar4 := compact(3);
  for i := 0 to 5 do
  begin
    Memo1.Lines.Add(DataVar[i]);
    Memo2.Lines.Add(DataVar1[i]);
    Memo3.Lines.Add(DataVar2[i]);
    Memo4.Lines.Add(DataVar3[i]);
    Memo5.Lines.Add(DataVar4[i]);
  end;
  if DataVar = DataVar1 then
begin
  ResetValue(0);
  Q_productinfo.Close;
  Q_productinfo.SQL.Text:='select * FROM '+DatabaseName+'decision ';
  Q_productinfo.Open;
 begin
  Q_productinfo.FieldByName('price').asstring:=a[i][0];
  Q_productinfo.FieldByName('Mileage').asstring:=a[i][1];
  Q_productinfo.FieldByName('size').asstring:=a[i][2];
  Q_productinfo.FieldByName('Max-speed').asstring:=a[i][3];
  i:=i+1;
  if i=6 then break;
  end;

end;
  if DataVar = DataVar2 then ResetValue(1);
  if DataVar = DataVar3 then ResetValue(2);
  if DataVar = DataVar4 then ResetValue(3);

end;

function Tdef.compact(l: integer): TDataVar;
var DataVar_sat: TDataVar;
  bj: Boolean;
begin
  SetLength(DataVar_sat, 6);
  for k := 0 to 5 do
  begin
    for i := 0 to 5 do
    begin
      bj := True;
      for j := 0 to 3 do
      begin
        if j <> l then
        begin
          if ((a[k, j] <> a[i, j]) and (a[k, j] <> '*') and (a[i, j] <> '*')) then
          begin
            bj := false;
            break;
          end;
        end;
      end;
      if bj = True then
      begin
        DataVar_sat[k] := DataVar_sat[k] + (IntToStr(i + 1));
      end;
    end;
  end;
  Result := DataVar_sat;
end;

function Tdef.compact1: TDataVar;
var DataVar_sat: TDataVar;
  bj: Boolean;
begin
  SetLength(DataVar_sat, 6);
  for k := 0 to 5 do
  begin
    for i := 0 to 5 do
    begin
      bj := True;
      for j := 0 to 3 do
      begin
        if ((a[k, j] <> a[i, j]) and (a[k, j] <> '*') and (a[i, j] <> '*')) then
        begin
          bj := false;
          break;
        end;
      end;
      if bj = True then
      begin
        DataVar_sat[k] := DataVar_sat[k] + (IntToStr(i + 1));
      end;
    end;
  end;
  Result := DataVar_sat;
end;

procedure Tdef.ResetValue(col: integer);
begin
  a[0, col] := '*';
  a[1, col] := '*';
  a[2, col] := '*';
  a[3, col] := '*';
  a[4, col] := '*';
  a[5, col] := '*';
end;

function Tdef.PosEx(const SubStr, S: string): integer; //取出第一个已知字符的位置
var
  i, X: integer;
begin
  i := 1;
  while i <= Length(S) do
  begin
    if S[i] <> SubStr then Inc(i);
    if S[i] = SubStr then
    begin
      Result := i;
      exit;
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -