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

📄 tools.~inc

📁 pipe类 pipe类 pipe类 pipe类 pipe类
💻 ~INC
字号:
// Save CPUid Flags button

procedure TMainFrm.TextRepBTBMouseEnter(Sender: TObject);
    begin
      TextRepBTB.Color:=$00D2BCAA;
    end;

procedure TMainFrm.TextRepBTBMouseLeave(Sender: TObject);
    begin
      TextRepBTB.Color:=$00EADBCF;
    end;

procedure TMainFrm.TextRepBTMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
        TextRepBTB.Color:=$00EADBCF;
        TextRepBT.Font.Color:=$00733A02
end;

procedure TMainFrm.MakeTextReport(isDialog: boolean);
var
  fSaveDialog: tSaveDialog;
  fTextFile: TextFile;
  i, j: byte;
  str, RepFile: string;
  ifExec: boolean;
  function IntToHexForm(val: integer; index: byte): string;
  var
    i: byte;
  begin
    result:=(format('%x',[val]));
    for i:=1 to index-Length(result) do
      insert('0', result, 0);
  end;
  function AppendToFull(val: string; index: byte): string;
  var
    i: byte;
  begin
    result:=val;
    for i:=1 to index-length(val)+1 do
      result:=result+' ';
  end;
begin
  RepFile:=ExtractFilePath(ParamSTR(0))+'\OSCIReport.txt';
  if isDialog then
    begin
      fSaveDialog:=tSaveDialog.Create(Self);
      fSaveDialog.Filter:='Text File (*.txt)|*.txt';
      fSaveDialog.FileName:='OSCIReport';
      ifExec:=fSaveDialog.Execute;
      RepFile:=fSaveDialog.FileName;
      if Copy(RepFile, length(RepFile)-3,4)<>'.txt' then RepFile:=RepFile+'.txt';
    end;
  if (ifExec) or (not isDialog) then
        begin
          AssignFile(fTextFile, RepFile);
          Rewrite(fTextFile);
          Writeln(fTextFile,'OverSoft CPU Informer version '+VersionSignature);
          Writeln(fTextFile,'----------------------------------');
          writeln(fTextFile);
          writeln(fTextFile,'Text report');
          writeln(fTextFile,'-----------');
          writeln(fTextFile);
          writeln(fTextFile);

          for i:=0 to CPUInfo[CurrentCpuNum].CPUCount-1 do
            begin
              writeln(fTextFile, AppendToFull('CPU Number:', 24)+IntToStr(i+1));
              if (CPUInfo[i].CPUfeatures{[i]}.APIC=1) and (CPUInfo[i].CPUCount>1) then writeln(fTextFile, AppendToFull('Apic ID:', 24)+IntToStr(CPUInfo[i].CPUid_m{[i]}.std_apic));
              if CPUInfo[i].nameinfo{[i]}.cpuname<>'' then writeln(fTextFile, AppendToFull('CPU Name:', 24)+CPUInfo[i].nameinfo{[i]}.cpuname);
              if CPUInfo[i].CPUid_m{[i]}.ext_cpu_name<>'' then writeln(fTextFile, AppendToFull('Extended Name:', 24)+CPUInfo[i].CPUid_m{[i]}.ext_cpu_name);
              if CPUInfo[i].nameinfo{[i]}.rating<> '' then writeln(fTextFile, AppendToFull('P-Rating:', 24)+CPUInfo[i].nameinfo{[i]}.rating);
              if CPUInfo[i].nameinfo{[i]}.codename<>'' then writeln(fTextFile, AppendToFull('Core CodeName:', 24)+CPUInfo[i].nameinfo{[i]}.codename);
              if CPUInfo[i].nameinfo{[i]}.technological.process<>'' then writeln(fTextFile, AppendToFull('Tech. Process:', 24)+CPUInfo[i].nameinfo{[i]}.technological.process);
              if CPUInfo[i].nameinfo{[i]}.platform_descr<>'' then writeln(fTextFile, AppendToFull('Platform:', 24)+CPUInfo[i].nameinfo{[i]}.platform_descr);
              if CPUInfo[i].CPUid_m{[i]}.std_brand<>0 then writeln(fTextFile, AppendToFull('BrandID:', 24)+IntToStr(CPUInfo[i].CPUid_m{[i]}.std_brand));
              writeln(fTextFile, AppendToFull('Family/Model/Stepping:', 24)+Format('%x', [CPUInfo[i].CPUid_m{[i]}.std_family])+'/'+Format('%x', [CPUInfo[i].CPUid_m{[i]}.std_model])+'/'+Format('%x', [CPUInfo[i].CPUid_m{[i]}.std_stepping]));
              writeln(fTextFile, AppendToFull('Level 1 Data:', 24)+IntToStr(CPUInfo[i].level1{[i]}.dcache.size)+' KBytes');
              if not CPUInfo[i].level1{[i]}.icache.is_trace then writeln(fTextFile, AppendToFull('Level 1 Instructions:', 24)+IntToStr(CPUInfo[i].level1{[i]}.icache.size)+' KBytes')
                                                       else writeln(fTextFile, AppendToFull('Level 1 Trace:', 24)+IntToStr(CPUInfo[i].level1{[i]}.icache.size)+' K礝ps');
              if CPUInfo[i].level2{[i]}.is_l2_cache then
              case CPUInfo[i].level2{[i]}.CachePerCPU of
              0,1: writeln(fTextFile, AppendToFull('Level 2:', 24)+IntToStr(CPUInfo[i].level2{[i]}.cache.size)+' KBytes');
              else
                writeln(fTextFile, AppendToFull('Level 2:', 24)+IntToStr(CPUInfo[i].level2{[i]}.CachePerCPU)+'x'+IntToStr(CPUInfo[i].level2{[i]}.cache.size)+' KBytes'); ;
              end;
              if CPUInfo[i].level3{[i]}.is_l3_cache then writeln(fTextFile, AppendToFull('Level 3:', 24)+IntToStr(CPUInfo[i].level3{[i]}.cache.size)+' KBytes');
              if CPUInfo[i].Clocks{[i]}.lpCpuFrequency<>0 then writeln(fTextFile, AppendToFull('CPU Frequency', 24)+FormatFloat('0.0 MHz', CPUInfo[i].Clocks{[i]}.lpCpuFrequency));
              if CPUInfo[i].Clocks{[i]}.Multiplier<>0 then writeln(fTextFile, AppendToFull('Multiplier', 24)+FormatFloat('x 0.0', CPUInfo[i].Clocks{[i]}.Multiplier));
              if CPUInfo[i].Clocks{[i]}.Bus<>0 then
                  if (CPUInfo[i].FlagBrand{[i]}=amd) and (CPUInfo[i].CPUid_m{[i]}.std_family=15) then writeln(fTextFile, AppendToFull('HTT:', 24)+FormatFloat('0.0 MHz', CPUInfo[i].Clocks{[i]}.Bus))
                                                                                     else writeln(fTextFile, AppendToFull('FSB:', 24)+FormatFloat('0.0 MHz', CPUInfo[i].Clocks{[i]}.Bus));
              if CPUInfo[i].Clocks{[i]}.FSB<>0 then writeln(fTextFile, AppendToFull('Bus Speed', 24)+FormatFloat('0.0 MHz', CPUInfo[i].Clocks{[i]}.FSB));
              writeln(fTextFile);
            end;
          writeln(fTextFile);

          writeln(fTextFile, 'Motherboard Info:');
          writeln(fTextFile, '----------------');
          if fPCIInfo.NorthBridge.Detected then writeln(fTextFile, AppendToFull('Northbridge:', 24)+fPCIInfo.NorthBridge.DeviceDescr);
          if fPCIInfo.SouthBridge.Detected then writeln(fTextFile, AppendToFull('Southbridge', 24)+fPCIInfo.SouthBridge.DeviceDescr);
          if Monitoring.ChipCount>=1 then writeln(fTextFile, AppendToFull('SuperIO Sensor', 24)+Monitoring.ChipNameStr+' on '+Monitoring.BusAccessStr);

          writeln(fTextFile);
          writeln(fTextFile);
          writeln(fTextFile, 'CPU ID flags:');
          writeln(fTextFile, '-------------');
          writeln(fTextFile, '                         eax         ebx         ecx         edx');
          for i:=0 to 5 do
            begin
              Write(fTextFile, 'Function '+(IntToHexForm($00000000+i, 8))+'        ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Standart[i].regEAX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Standart[i].regEBX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Standart[i].regECX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Standart[i].regEDX, 8));
              Writeln(fTextFile);
            end;
          for i:=0 to 8 do
            begin
              Write(fTextFile, 'Function '+(IntToHexForm($80000000+i, 8))+'        ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Extended[i].regEAX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Extended[i].regEBX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Extended[i].regECX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Extended[i].regEDX, 8));
              Writeln(fTextFile);
            end;
          for i:=0 to 7 do
            begin
              Write(fTextFile, 'Function '+(IntToHexForm($80860000+i, 8))+'        ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Transmeta[i].regEAX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Transmeta[i].regEBX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Transmeta[i].regECX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Transmeta[i].regEDX, 8));
              Writeln(fTextFile);
            end;
          for i:=0 to 1 do
            begin
              Write(fTextFile, 'Function '+(IntToHexForm($C0000000+i, 8))+'        ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Centaur[i].regEAX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Centaur[i].regEBX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Centaur[i].regECX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Centaur[i].regEDX, 8));
              Writeln(fTextFile);
            end;
          for i:=$E to $F do
            begin
              Write(fTextFile, 'Function '+(IntToHexForm($8FFFFFF0+i, 8))+'        ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Mystery[i].regEAX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Mystery[i].regEBX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Mystery[i].regECX, 8)+'    ');
              Write(fTextFile, IntToHexForm(CPUInfo[CurrentCpuNum].CPUdata{[CurrentCpuNum]}.Mystery[i].regEDX, 8));
              Writeln(fTextFile);
            end;

          writeln(fTextFile);
          writeln(fTextFile);
          writeln(fTextFile, 'PCI dump:');
          writeln(fTextFile, '---------');
          writeln(fTextFile);

          fPCIInfo.ScanPCIBus;
          if Low(fPCIInfo.PCIDevices)<=High(fPCIInfo.PCIDevices) then
          for i:=Low(fPCIInfo.PCIDevices) to High(fPCIInfo.PCIDevices) do
            begin
              str:='Bus: '+format('%x', [fPCIInfo.PCIDevices[i].dwBus])+' Dev: '+format('%x', [fPCIInfo.PCIDevices[i].dwDev])+' Func: '+format('%x', [fPCIInfo.PCIDevices[i].dwFunc]);
              writeln(fTextFile, str);
              str:='Device Class: '+fPCIInfo.PCIDevices[i].ClassDescr;
              writeln(fTextFile, str);
              str:='';
              for j:=0 to $FF do
                begin
                  if j mod 16 = 0 then begin writeln(fTextFile, str); str:=''; end;
                  str:=str+IntToHexForm(fPCIInfo.PCIDevices[i].DeviceDump[j], 2)+' ';
                end;
              writeln(fTextFile);
              writeln(fTextFile);
            end;

          CloseFile(fTextFile);
        end;
    if isDialog then fSaveDialog.Destroy;
end;

procedure TMainFrm.TextRepBTMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  TextRepBTB.Color:=$00D2BCAA;
  MakeTextReport(true);
end;

⌨️ 快捷键说明

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