• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi-ErrorCode查询

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

技术交流,DH.

我们一般在调用了一些API后都会用GetLastError来获得错误信息,但是信息都是Integer的,我们知道是什么意思么?
嘿嘿,是的,有msdn呀,当然还可以用FormatMessage函数来.
正好看了下Windows核心编程第一章有个例子,来用Delphi试一下.
主要用了FormatMessage函数,具体用法和注意事项就很多了,大家可以看MSDN了.

Unit UtMain;

Interface

Uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  CxGraphics,
  CxControls,
  CxLookAndFeels,
  CxLookAndFeelPainters,
  CxContainer,
  CxEdit,
  DxSkinsCore,
  DxSkinSeven,
  CxGroupBox,
  CxCheckBox,
  CxTextEdit,
  DxSkinsForm,
  CxLabel,
  Menus,
  CxMemo,
  StdCtrls,
  CxButtons;

Type
  TForm3 = Class(TForm)
    Cxlbl1: TcxLabel;
    DxSkinController1: TdxSkinController;
    CxtxtCode: TcxTextEdit;
    CxchkHex: TcxCheckBox;
    GrpDescription: TcxGroupBox;
    BtnSearch: TcxButton;
    CxmDescription: TcxMemo;
    Procedure BtnSearchClick(Sender: TObject);
    Procedure FormCreate(Sender: TObject);
  Private
    { Private declarations }

    DwCode: Cardinal;
    SystemLocale: Cardinal;
  Public
    { Public declarations }
  End;

Var
  Form3: TForm3;

Implementation

{$R *.dfm}

Procedure TForm3.BtnSearchClick(Sender: TObject);
Var
  B: Cardinal;
  HLib: Cardinal;
  Buf: PChar;
Begin
  If CxchkHex.Checked Then
    DwCode := StrToIntDef('$' + CxtxtCode.Text, 0)
  Else
    DwCode := StrToIntDef(CxtxtCode.Text, 0);
  GetMem(Buf, 256);
  Try
    // 尝试获取一下
    B := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, Nil, DwCode, SystemLocale,
      Buf, 255, Nil);
    // 如果默认没有 查询下网络相关的
    If B = 0 Then
    Begin
      HLib := LoadLibraryEx('netmsg.dll', 0, DONT_RESOLVE_DLL_REFERENCES);
      Try
        Assert(HLib <> 0);
        B := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, Pointer(HLib), DwCode,
          SystemLocale, Buf, 255, Nil);
      Finally
        If HLib <> 0 Then
          FreeLibrary(HLib);
      End;
    End;
    If (B <> 0) Then
      CxmDescription.Text := Buf
    Else
      CxmDescription.Text := '没有找到错误码的相关描述';

  Finally
    FreeMem(Buf);
  End;
End;

Procedure TForm3.FormCreate(Sender: TObject);
Begin
  // 设置语言为默认
  SystemLocale := MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
End;

End.

我为了要dx的皮肤,所以这里用到了DevExpress控件,但是没有用到控件的其他功能,所以大家如果没有安装Dev,可以直接换成最普通的Button这些控件就可以了额.
来个图片看一下:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
DelphiHotKeyComponent发布时间:2022-07-18
下一篇:
delphi打开修改其他程序内存发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap