标签 pascal 下的文章

Delphi 检测文件数字签名

Uses Winapi.Windows, JwaSoftpub, CAPICOM_TLB, JwaWintrust;

Function IsCodeSigned(const Filename:String):Boolean;
var
  FileInfo   :TWinTrustFileInfo;
  TrustData  :TWinTrustData;
begin
  ZeroMemory(@FileInfo, SizeOf(TWintrustFileInfo));
  ZeroMemory(@TrustData, SizeOf(TWinTrustData));
  FileInfo.cbStruct             := SizeOf(TWintrustFileInfo);
  FileInfo.pcwszFilePath        := PWideChar(FileName);
  TrustData.cbStruct            := sizeof(TrustData);
  TrustData.dwUIChoice          := WTD_UI_NONE;
  TrustData.fdwRevocationChecks := WTD_REVOKE_NONE;
  TrustData.dwUnionChoice       := WTD_CHOICE_FILE;
  TrustData.InfoUnion.pFile     := @FileInfo;
  Result := WinVerifyTrust(INVALID_HANDLE_VALUE, WINTRUST_ACTION_GENERIC_VERIFY_V2, TrustData) = ERROR_SUCCESS;
end;

Delphi下的纯Pascal的十六进制转十进制

Function StrLenA(Str :PAnsiChar):Integer;
Begin
  Result := 0;
  while Str[Result] <> #$0 do Inc(Result)
End;  

Function Char2Int(A :AnsiChar):Integer;
Begin   //字符转整数
  Result := -1;
  if (Byte(A) > 47) And (Byte(A) < 58) Then
  Begin   //0-9
    Result := Byte(A) - 48;
  End Else if (Byte(A) > 64) And (Byte(A) < 71) then
  Begin   //A-F
    Result := Byte(A) - 55;
  End Else if (Byte(A) > 96) And (Byte(A) < 103) then
  Begin  //a-f
    Result := Byte(A) - 87;
  End;               
End;

Function HexPower(X, Y:Integer):UInt64;
Var     //次方计算
  I :Integer;
Begin
  Result := X;
  for I := 1 to Y do
  Begin
    Result := Result * 16;
  End;
End;  

Function Hex2Int(HEX :PAnsiChar):UInt64;
Var   //十六进制字符串转整数
  iLen :Integer;
  I    :Integer;
Begin
  iLen  := StrLenA(HEX);
  Result:= 0;
  for I:= 0 to iLen-2 do
  Begin
    Result := Result + HexPower(Char2Int(HEX[I]), iLen - (I + 1)); 
  End;  
  Result := Result + Char2Int(HEX[iLen-1]);
End;




代码实例:

Var
  HEX  :Array [0..16] Of AnsiChar;
begin
  HEX  := '14f03'#$0;  
  Writeln(Hex2Int(@HEX));

  HEX  := 'FFFFFFFF'#$0;  
  Writeln(Hex2Int(@HEX));
  
  HEX  := 'FFFFFFFFFFFFFFFF'#$0;  
  Writeln(Hex2Int(@HEX));
  Readln;  
End.



运行结果:


Untitled.jpg/