GetLastError来获得错误信息转成文本描述
我们一般在调用了一些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, )
Else
DwCode := StrToIntDef(CxtxtCode.Text, );
GetMem(Buf, );
Try
// 尝试获取一下
B := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, Nil, DwCode, SystemLocale,Buf, , Nil);
// 如果默认没有 查询下网络相关的
If B = Then
Begin
HLib := LoadLibraryEx('netmsg.dll', , DONT_RESOLVE_DLL_REFERENCES);
Try
Assert(HLib <> );
B := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, Pointer(HLib), DwCode,
SystemLocale, Buf, , Nil);
Finally
If HLib <> Then
FreeLibrary(HLib);
End;
End;
If (B <> ) 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.
http://blog.csdn.net/yanjiaye520/article/details/6694510
GetLastError来获得错误信息转成文本描述的更多相关文章
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_07-用户认证-认证服务查询数据库-解析申请令牌错误信息
1.2.5.4 解析申请令牌错误信息 当账号输入错误应该返回用户不存在的信息,当密码错误要返回用户名或密码错误信息,业务流程图如下: 修改申请令牌的程序解析返回的错误: 由于restTemplate收 ...
- SVN错误信息汇总
svn错误信息 # # Simplified Chinese translation for subversion package # This file is distributed under ...
- Extjs 表单验证后,几种错误信息展示方式
今天要求对form表单验证,进行系统学习一下,故做了几个示例: Ext.onReady(function(){ var panel=Ext.create('Ext.form.Panel' ...
- Sharepoint2013:在页面上显示错误信息
在sharepoint2013中我们需要修改以下三处的web.config,以显示错误信息 1, C:\inetpub\wwwroot\wss\VirtualDirectories\端口号\web.c ...
- DB2中错误信息说明
DB2错误信息SQLCODE SQLSTATE (按sqlcode排序) .分类: db2数据库 2012-10-19 11:35 2942人阅读 评论(0) 收藏 举报 db2sql存储table数 ...
- odbc错误信息一览表
ODBC 错误信息 根据 X/Open 和 SQL Access Group SQL CAE 规范 (1992) 所进行的定义,SQLERROR 返回 SQLSTATE 值.SQLSTATE 值是包含 ...
- 修改php.ini以达到 屏蔽错误信息
那是因为php.ini中关闭了错误显示,将错误写成了文件,这是人为设置的结果,display_errors =on就好了. 不过不显示错误倒安全点,建议调试时打开,然后提供服务时关闭. 提供一点资料给 ...
- mtk的安卓手机刷机时出现的错误信息
手机已成砖,用过好多工具都没刷回来,以下是用smart phone flash tool刷机时出现的错误信息 ---------------------------Smart Phone Flash ...
- Asp.net 程序部署问题——在应用程序级别之外使用注册为 allowDefinition='MachineToApplicati错误信息
[转]在应用程序级别之外使用注册为 allowDefinition='MachineToApplicati 错误信息: ======================================== ...
随机推荐
- Android上使用OpenglES2.0遇到的一点问题
按照教程开发OpenglES2.0应用,遇到Logcat报错“Called unimplemented OpenGL ES API” 在论坛和stackoverflow上找到了答案. 1.manife ...
- 循环-10. 求序列前N项和*
/* * Main.c * C10-循环-10. 求序列前N项和 * Created on: 2014年7月30日 * Author: Boomkeeper *******部分通过******* */ ...
- 补丁惹的祸-ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出 问题: 重新安装了VS2012,结 ...
- mysql应用技巧
1. 查看mysql死锁 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; 2.查看正在锁的事务 SELECT * FROM INFORMATION_SCHEM ...
- python学习day1
python简单介绍: Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种 ...
- Oracle EBS-SQL (MRP-6):检查MRP计划运行报错原因之超大数据查询1.sql
/*逐一运行检查计划运行超大数据*/ ---------------------------------------------------- /*查询-1*/ select plan_id, 'C ...
- 在WPF中自定义你的绘制(五)
原文:在WPF中自定义你的绘制(五) 在WPF中自定义你的绘制(五) ...
- C++求二叉树的最大高度差
#include <iostream> #include <string.h> using namespace std; template<typename Type&g ...
- 任务调度开源框架Quartz动态加入、改动和删除定时任务
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包括了调度器监听.作业和触发器监听.你能够配置作业和触发器监听为全局监听或者是特定于 ...
- 从一个非开发人员转行silverlight满一年的工作总结(第一次发帖)
自2013年3月进入公司到现在已整整一年.这一年,让我从一个大学毕业就去参军并且专业还不对口的大学生步入了软件开发这个高门槛行业.说实话,我真的很庆幸,庆幸遇到了两位赏识自己的领导从很多专业对口.能力 ...