划过天际的流星

一起来讨论技术吧
 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿(1)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • VC++ (rss)

随笔档案

  • 2007年12月 (1)
  • 2007年7月 (2)
  • 2007年6月 (9)

文章档案

  • 2007年6月 (1)

好友的链接

  • 韩咚咚的博客
  • 清华小哥,经常我称之为徐咚咚,后来我索性叫:咚咚们,吃饭,肯定不能错。。。。。
  • 卡卡的博客
  • 据说这段时间在抽风,偶尔干很sb的事情,让人偶尔相当bs的天才

搜索

  •  

最新评论

  • 1. re: 关于文本转化问题
  • 我装了所谓的破解版,但不可用,请赐教,谢谢!liangsir416379606@163.com
  • --liangsir
  • 2. re: 关于文本转化问题
  • 我也下载了汉王文本王的破解版(破解文件覆盖安装),但也只能用你提到的屏取词,其它功能均不能用.不知道为什么?
    我的EMAIL:lynvon@sohu.com
  • --lynvon
  • 3. re: 关于文本转化问题
  • 有问题直接在我博客上留言即可,我的博客会自动把你的问题转到我的邮箱,谢谢,请你也留下自己的联系方式,QQ不上,最好留自己email,谢谢~
  • --Fish
  • 4. re: 关于文本转化问题[未登录]
  • 我想试试这软件,不知怎么联系你,我的QQ50354981
  • --ken

阅读排行榜

  • 1. 关于文本转化问题(439)
  • 2. VC调试进阶(1) zz(376)
  • 3. vc++.net 高级编程的小问题(328)
  • 4. VC调试入门 (286)
  • 5. 最近在看数字图像处理(219)

评论排行榜

  • 1. 关于文本转化问题(4)
  • 2. 这段时间(0)
  • 3. 微软的项目真是痛心啊(0)
  • 4. 惭愧啊!(0)
  • 5. 没办法哦(0)

Powered by: 博客园
模板提供:沪江博客
C++博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2007年12月17日

惭愧啊!
很久没来写东西了,这个博客我觉得还是要开下去,为什么要选择这里呢?关键就是要督促自己前进,不可以再浪费时间了,这段时间事情似乎进行的不是很顺利,具体过程就不说了,现在接下来要完成的事情主要列了一下有以下几个:
1 在这周末完成小老板的一个总结,涉及6个方面的数据库的建立
2 完成下周四的一个lecture~这个东西主要就涉及的我课题了,应该还好搞定
3  完成单词的复习,陆陆续续的背了过半的单词,可惜忘记了很多,要把前面的很多东西重新得捡起来,这个可不是一件容易的事情,背单词对于我是最痛苦的活了!`


好了就说那么多了,大家周一愉快!~
posted @ 2007-12-17 21:51 Fish 阅读(170) | 评论 (0) | 编辑 收藏
 

2007年7月1日

微软的项目真是痛心啊
那么多项目放弃的,最过分的个校园导航都能放弃,这个项目居然也能批下来,更郁闷的是居然结果是放弃,真是一群废人,败自己的时间,败学校的名声(哎,是校本部的白痴),败鬼子的钱(虽然我比较痛恨鬼子,但也不支持这样败)!!
posted @ 2007-07-01 17:10 Fish 阅读(208) | 评论 (0) | 编辑 收藏
 
这段时间
恩恩,消失了几天没写博,各种各种原因,最近忙完了2篇项目创意,帮老婆搞定论文了,现在在写英文翻译,最近还有篮球赛,一团乱,对了,今天还考了英语,真是靠啊,这是英语么?今天早上看了半个小时就去了,考的啥也不说了,但也死不了,坐在徐东东旁边,看他也是抓耳挠腮的,彼此彼此
posted @ 2007-07-01 17:02 Fish 阅读(146) | 评论 (0) | 编辑 收藏
 

2007年6月20日

关于文本转化问题
lp的论文,巨痛苦,居然还想让我打30多页,天啊,杀了我吧,我从小到大没干过这民工活,废话少说,说说这几天的我的研究:
1 如果碰上巨傻x而且混蛋的论文作者,把字弄成了图像,不要慌,我不会让你打字的,我告诉你,用汉王文本王文文豪7600专业版,用屏幕识别,把图像开到最大,最好全屏,这直接影响你后面的识别率的高低,别说我没告诉你!!!!!!然后抓图点识别就ok了,唯一麻烦的就是要一段一段来,不能批量,中文识别率高达95%(数学符号就是一大串乱码),我亲自测试了,不要小看几句话!!!这是惨痛的经验教训,作为秘方流传吧!!!在此强烈bs卡卡等一帮人,狂打击偶的自信,我说了肯定能拿下的!!!!!!老子的话还能错么?
2 pdf的转化问题,碰上傻x的图像就认命吧,慢慢用上面的方法抓图识别吧~~唉,我也想改成批量处理,让我再研究几天
3 pdf上可以截取文本的情况,数学符号无法转化为word,那真毛办法了,我现在也是手打!!不过我认为可以转化,可能需要添加识别的字库之类的!!!!

到此为止,需要软件的可以找我要,是破解的汉王!!
posted @ 2007-06-20 02:27 Fish 阅读(439) | 评论 (4) | 编辑 收藏
 

2007年6月15日

最近在看数字图像处理

鸟文版,剧痛苦,幸好有本电子版中文,老大的课,没选也得好好学,要不然被落下话柄咋办?苦命啊,昨天晚上用作弊器打的师兄嗷嗷叫,不能怪我,谁让他们3vs1呢,据说仿佛他们也是作弊器,用吧用吧,只要你们觉的很爽就可以了,

posted @ 2007-06-15 20:50 Fish 阅读(219) | 评论 (0) | 编辑 收藏
 

2007年6月14日

关于英语考试
很帅的站在上面,幸好没有很帅的跟老师说:i am sorry!!!
很不幸,我居然是缺课排第二的人,大家一起bs我吧!!!我真的缺了那么多么?
posted @ 2007-06-14 12:12 Fish 阅读(193) | 评论 (0) | 编辑 收藏
 

2007年6月12日

应该看看的东西

http://player.youku.com/player.php/sid/XNDUwNzg0NA==/v.swf

posted @ 2007-06-12 19:23 Fish 阅读(159) | 评论 (0) | 编辑 收藏
 
一个调试的网站
http://www.vckbase.com/
posted @ 2007-06-12 17:15 Fish 阅读(183) | 评论 (0) | 编辑 收藏
 
VC调试入门
VC调试入门
概述
调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。
这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。
本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。
 
设置
为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。
为了增加调试信息,可以按照下述步骤进行:
  • 打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开)
  • 选择C/C++页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息 方式包括:
     
    命令行 Project settings 说明
    无 None 没有调试信息
    /Zd Line Numbers Only 目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息
    /Z7 C 7.0- Compatible 目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等
    /Zi Program Database 创建一个程序库(PDB),包括类型信息和符号调试信息。
    /ZI Program Database for Edit and Continue 除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效

  • 选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL
  • 如果C/C++页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。
断点
断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是 最常用的技巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。

设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后
  • 按F9快捷键
  • 弹出Breakpoints对话框,方法是按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择 合适的位置信息。一般情况下,直接选择line xxx就足够了,如果想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号和可执行文件信息。
去掉断点:把光标移动到给定断点所在的行,再次按F9就可以取消断点。同前面所述,打开Breakpoints对话框后,也可以按照界面提示去掉断点。

条件断点:可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击Conditions按钮,为断点设置一个表达式。当这个表达式发生改变时,程序就 被中断。底下设置包括“观察数组或者结构的元素个数”,似乎可以设置一个指针所指向的内存区的大小,但是我设置一个比较的值但是改动 范围之外的内存区似乎也导致断点起效。最后一个设置可以让程序先执行多少次然后才到达断点。

数据断点:数据断点只能在Breakpoints对话框中设置。选择“Data”页,就显示了设置数据断点的对话框。在编辑框中输入一个表达式,当这个 表达式的值发生变化时,数据断点就到达。一般情况下,这个表达式应该由运算符和全局变量构成,例如:在编辑框中输入 g_bFlag这个全局变量的名字,那么当程序中有g_bFlag= !g_bFlag时,程序就将停在这个语句处。

消息断点:VC也支持对Windows消息进行截获。他有两种方式进行截获:窗口消息处理函数和特定消息中断。
在Breakpoints对话框中选择Messages页,就可以设置消息断点。如果在上面那个对话框中写入消息处理函数的名字,那么 每次消息被这个函数处理,断点就到达(我觉得如果采用普通断点在这个函数中截获,效果应该一样)。如果在底下的下拉 列表框选择一个消息,则每次这种消息到达,程序就中断。

值
Watch
VC支持查看变量、表达式和内存的值。所有这些观察都必须是在断点中断的情况下进行。
观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会就可以看到变量的值。
VC提供一种被成为Watch的机制来观看变量和表达式的值。在断点状态下,在变量上单击右键,选择Quick Watch, 就弹出一个对话框,显示这个变量的值。
单击Debug工具条上的Watch按钮,就出现一个Watch视图(Watch1,Watch2,Watch3,Watch4),在该视图中输入变量或者表达式,就可以观察 变量或者表达式的值。注意:这个表达式不能有副作用,例如++运算符绝对禁止用于这个表达式中,因为这个运算符将修改变量的值,导致 软件的逻辑被破坏。

Memory
由于指针指向的数组,Watch只能显示第一个元素的值。为了显示数组的后续内容,或者要显示一片内存的内容,可以使用memory功能。在 Debug工具条上点memory按钮,就弹出一个对话框,在其中输入地址,就可以显示该地址指向的内存的内容。

Varibles

Debug工具条上的Varibles按钮弹出一个框,显示所有当前执行上下文中可见的变量的值。特别是当前指令涉及的变量,以红色显示。

寄存器
Debug工具条上的Reigsters按钮弹出一个框,显示当前的所有寄存器的值。

进程控制
VC允许被中断的程序继续运行、单步运行和运行到指定光标处,分别对应快捷键F5、F10/F11和CTRL+F10。各个快捷键功能如下:
 
快捷键 说明
F5 继续运行
F10 单步,如果涉及到子函数,不进入子函数内部
F11 单步,如果涉及到子函数,进入子函数内部
CTRL+F10 运行到当前光标处。

Call Stack
调用堆栈反映了当前断点处函数是被那些函数按照什么顺序调用的。单击Debug工具条上的Call stack就显示Call Stack对话框。在CallStack对话框中显示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上级函数。单击这些函数名可以跳到对应的函数中去。

其他调试手段
系统提供一系列特殊的函数或者宏来处理Debug版本相关的信息,如下:

宏名/函数名 说明
TRACE 使用方法和printf完全一致,他在output框中输出调试信息
ASSERT 它接收一个表达式,如果这个表达式为TRUE,则无动作,否则中断当前程序执行。对于系统中出现这个宏 导致的中断,应该认为你的函数调用未能满足系统的调用此函数的前提条件。例如,对于一个还没有创建的窗口调用SetWindowText等。
VERIFY 和ASSERT功能类似,所不同的是,在Release版本中,ASSERT不计算输入的表达式的值,而VERIFY计算表达式的值。

关注
一个好的程序员不应该把所有的判断交给编译器和调试器,应该在程序中自己加以程序保护和错误定位,具体措施包括:

  • 对于所有有返回值的函数,都应该检查返回值,除非你确信这个函数调用绝对不会出错,或者不关心它是否出错。
  • 一些函数返回错误,需要用其他函数获得错误的具体信息。例如accept返回INVALID_SOCKET表示accept失败,为了查明 具体的失败原因,应该立刻用WSAGetLastError获得错误码,并针对性的解决问题。
  • 有些函数通过异常机制抛出错误,应该用TRY-CATCH语句来检查错误
  • 程序员对于能处理的错误,应该自己在底层处理,对于不能处理的,应该报告给用户让他们决定怎么处理。如果程序出了异常, 却不对返回值和其他机制返回的错误信息进行判断,只能是加大了找错误的难度。
另外:VC中要编制程序不应该一开始就写cpp/h文件,而应该首先创建一个合适的工程。因为只有这样,VC才能选择合适的编译、连接 选项。对于加入到工程中的cpp文件,应该检查是否在第一行显式的包含stdafx.h头文件,这是Microsoft Visual Studio为了加快编译 速度而设置的预编译头文件。在这个#include "stdafx.h"行前面的所有代码将被忽略,所以其他头文件应该在这一行后面被包含。
对于.c文件,由于不能包含stdafx.h,因此可以通过Project settings把它的预编译头设置为“不使用”,方法是:
  • 弹出Project settings对话框
  • 选择C/C++
  • Category选择Precompilation Header
  • 选择不使用预编译头。
posted @ 2007-06-12 17:12 Fish 阅读(286) | 评论 (0) | 编辑 收藏
 
VC调试进阶(1) zz
VC调试进阶(1)

vc的调试,可以参考如下:
检测程序中的括号是否匹配
把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>)前面,键入快
捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭
还会发出一声警告声。

2.查看一个宏(或变量、函数)的宏定义

把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键
菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定,然后就
会跳到定义那些东西的地方。

3.格式化一段乱七八糟的源代码

选中那段源代码,按ATL+F8。

4.在编辑状态下发现成员变量或函数不能显示

删除该项目扩展名为.ncb文件,重新打开该项目。

5.如何整理ClassView视图中大量的类

可以在classview 视图中右键新建文件夹(new folder),再把具有相近性质的类拖到对应的文件
夹中,使整个视图看上去清晰明了.

6.定位预处理指定

在源文件中定位光标到对称的#if, #endif,使用Ctrl+K.

7.如何添加系统中Lib到当前项目

在Project | Settings | Link | Object/library modules:输入Lib名称,不同的Lib之间用空
格格开.

8.如何添加系统中的头文件(.h)到当前项目.

#include <FileName.h>,告诉编译到VC系统目录去找;使用#include "FileName.h",告诉编译在当
前目录找.

9.如何在Studio使用汇编调试

在WorkBench的Debugger状态下按CTRL+F7.

10.怎样处理ClassZiard找不到的系统消息

如果要在ClassWizard中处理WM_NCHITTEST等系统消息,请在ClassWizard中Class Info页中将
Message filter改为Window就有了.

11.如何干净的删除一个类

先从Workspace中的FileView中删除对应的.h和.cpp文件,再关闭项目,从实际的文件夹中删除
对应的.h和.cpp文件与.clw文件。

12.如果让控制台应用程序支持mfc类库

可以在控制台应用程序中include 来引入mfc库,但是控制台应用程序缺省是单线程的,mfc是多
线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,
在use run-time library 下拉框中选择debug multithread。

13.如何汉化只有可执行代码的.exe 文件

在nt 下利用vc open file 以resources方式打开*.exe 文件,直接修改资源文件,然后保存即可。

附:VC项目文件说明

.opt 工程关于开发环境的参数文件。如工具条位置等信息;
.aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他.
.clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出
     问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你
     是否重建.
.dsp (DeveloperStudio Project):项目文件,文本格式,不过不熟悉的话不要手工修改.DSW
     (DeveloperStudio Workspace)是工作区文件,其他特点和DSP差不多.
.plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用
     处不大.在Tools->Options里面有个选项可以控制这个文件的生成.
.hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理.
.mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否
     转换成新的DSP格式.
.bsc 是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件.如果不用这个功能的话,
     可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度.
.map 是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着.
.pch (Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大.
.pdb (Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用.
.exp 只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息.一般也没什么用.
.ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后
     会自动生成。

posted @ 2007-06-12 16:45 Fish 阅读(376) | 评论 (0) | 编辑 收藏
 
仅列出标题  下一页