edog

冰冻热狗
数据加载中……

置顶随笔

[置顶]用VC++6.0编程实现汉字拼音查找

     摘要: 用VC++6.0编程实现汉字拼音查找 eDog[原创] 摘要   使用VC++6.0编程查找汉字的拼音 关键字   汉字,拼音,资源 下载:http://www.cppblog.com/Files/edog/LookPY.rar 一、         &n...  阅读全文

posted @ 2005-11-30 00:25 冰冻热狗 阅读(1992) | 评论 (16)编辑 收藏

2007年11月21日

一个串口通讯的类

     摘要: /**//* CommUtils.h */#ifndef _CommUtils_H__#define _CommUtils_H__class CommUtils  {public:    bool ReadCom(unsigned char * Re...  阅读全文

posted @ 2007-11-21 10:28 冰冻热狗 阅读(772) | 评论 (0)编辑 收藏

一些常用函数

1、取当前路径
    char szCurPath[256];
    GetModuleFileName(NULL, szCurPath, 
256);
    
for(int i=strlen(szCurPath)-1; i>=0; i--)
    
{
        
if(szCurPath[i] == '\\')
        
{
            szCurPath[i
+1]=0;
            
break;
        }

    }

2、设置CListCtrl风格
m_List1.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);

3、INI文件操作
char ss[20];
GetPrivateProfileString(
"COMM""BaudRate""", ss, 20, szCurPath);
WritePrivateProfileString(
"COMM""BaudRate", ss, szCurPath);

4、字符串转为16进制
void CommUtils::HexToChar(unsigned char *hex, int dwLength, char *buf)
{
    
int i;
    
char s[10];
    buf[
0]=0;
    
for(i=0; i<dwLength; i++)
    {
        sprintf(s, 
"%02X ", hex[i]);
        strcat(buf, s);
    }
}

posted @ 2007-11-21 10:12 冰冻热狗 阅读(120) | 评论 (0)编辑 收藏

2006年9月24日

WIN2000无人值守安装

1:消除WINDOWS2000安装过程中提示输入注册号的过程
  把WINDOWS2000安装文件拷贝到硬盘,打开i386目录下的setupp.ini,将PID后面的数字改成51873270,那么在整个安装过程中就不会有输入序列号的过程了。

2:实现WIN2000的无人值守安装
  在WINDOWS2000的安装盘上有一个SUPPORTTOOLS的目录,将其中的DEPLOY.CAB拷贝到硬盘,用WINZIP进行解压缩。然后运行其中的setupmgr.exe,WINDOWS2000会根据你的需要建立一个自动批处理文件。以后再安装WINDOWS2000,只需要在DOS下键入winnt[/s:安装文件目录][/u:自动安装文件名称]例如:
  d:i386winnt /B /u:d:setup.txt /s:d:i386
  表示使用D:下创建的setup.txt文件对WIN2000进行自动安装。

posted @ 2006-09-24 16:37 冰冻热狗 阅读(296) | 评论 (0)编辑 收藏

2006年6月14日

VC6书签管理插件

原文链接:http://www.codeproject.com/useritems/BookMarkMgr.asp


本程序为VC6.0的插件,在IDE中以工具条ToolBar的形式出现,接合Edit工具条使用,实现书签管理的功能(VC本身的书签在关闭文件后会丢失)。

此插件有三个按钮,提供打开/保存/编辑书签的功能:
1、保存和恢复书签,就算文件关闭了,下次打开时可以恢复书签。
2、编辑已存在的书签
3、重新打开一个已经关闭的文件时,自动查找原来已经保存的书签并重新设置书签。

此插件为DLL,下载链接为:
安装如下:
1、复制到硬盘某一位置
2、打开VC6.0的菜单“Tools->Customize”,选择“Add-Ins and macro Files”页
3、选择“Browse”按钮,选择本插件文件

至此,就可以使用了。

posted @ 2006-06-14 09:12 冰冻热狗 阅读(321) | 评论 (0)编辑 收藏

2006年6月11日

Asp的时间格式问题

现象:使用ASP取当前时间NOW,返回的时间带有上下午字样,导致无法写入datetime字段。
原因:安装了WIN2000番茄乐园版,该版本把系统时间修改为带上下午格式。

方法1:
1、控制面板--区域和语言选项--把时间设置为24小时格式。
2、打开注册表建立HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT\VarConversionLocaleSetting = 2 (DWORD)
备注:OLEAUT 项可能不存在。如果它不存在,则必须先创建该项。
3、重新启动IIS。

问题解决,原理是强制使asp时间使用区域格式。


方法2:
查找注册表,全部匹配,把iTime的值全部改成1 。
然后修改服务器系统时间,重起机器完全正常了~
(此方法试过好像不行)

posted @ 2006-06-11 13:39 冰冻热狗 阅读(670) | 评论 (0)编辑 收藏

2006年5月3日

函数的多参量处理

函数需要输入多个参数时,象sprintf的用法一样:

void  WriteLog2( bool  bNeedTime,  const   char   * fmt, )
{
    
if  (fpLog  ==  NULL)     return ;
    SYSTEMTIME tm;
    GetLocalTime(
& tm);
    
if  (bNeedTime)
    
{
        fprintf(fpLog, 
" %02d:%02d:%02d.%03d\t " , tm.wHour, tm.wMinute, tm.wSecond, tm.wMilliseconds);
    }


    va_list pArg;
    va_start(pArg, fmt);
    fprintf(fpLog, fmt, pArg);
    va_end(pArg);

    fputs(
" \n " , fpLog);
}

 

posted @ 2006-05-03 00:29 冰冻热狗 阅读(121) | 评论 (0)编辑 收藏

2006年3月15日

用VS2003调试ASP的方法和体会

一直以来,和很多朋友一样,我调试ASP一般都是用editplus,当然,界面部分还是要用用什么frontpage之类的啦。 前段时间写.net项目,装了一个VS.net2003,最近要写一个asp的项目,后来想想用vs20003来试试吧。
1、打开VS2003,先新建立一个项目,选Visual Basic项目--空WEB项目,名字就叫webproject1,然后可以在资源管理器(是VS的不是windows的)里看到解决方案。


2、点项文件栏上的"项目",然后点"webproject1属性"--"配置属性"--"调试"里,把"ASP.NET调试"去掉,把"ASP"调试打开。 


3、右键webproject1,添加新项---WEB窗体,名称叫index.asp(注意名称不是aspx,是asp)。然后可以看到index.asp的HTML处理编辑状态。
4、把现成的代码全部删除,因为这个是VS自动生成的,当中有些代码是用于asp.net的。然后你就可以自由编写你的ASP页面了。在编写代码的时候,VS会提供一些自动完成功能,很方便的。
 
5、现在准备调试。在资源管理器中index.asp,右键,设置为起始页。
6、然后点工具栏上的"三角"(哈哈,就是播放键)啦,这个就是debug的调试。
7、然后会跳出一个窗口让你输入本机密码,你就输入你登录用户的密码好了。 IE跳出来了,页面中显示出"VS下调试ASP项目",哈,调试成功了!
 
结束调试的话你可以在VS里点工具栏上的那个"方块"(就是停止调试),也可以直接把IE关掉,也会自动停止调试的。

好了,下面来谈谈我的一点经验和体会吧。
1、VS调试ASP程序比较慢,这个慢是体现在打开IE页面时,所以我建议一般的写代码和编程就在VS里,调试的时候就像以前那样,直接开个IE进行调试。但是,对于复杂的问题,涉及到流程错误的,我还是喜欢在VS里用单步调试,用F9在某个地方设个断点,然后用F10进行跟踪,这样对于程序的流程,变量值都可以很好的看出来(这些调试技巧大家可以参考一些asp.net方面的书,或是以前的VS6的书也行),解决复杂问题也就快了许多。

2、建立新页面文件时,我建议还是直接进到目录中,然后建立好,再到VS的资源管理器中,用添加现有项进行导入,这样建立的文件没有垃圾代码。

3、VS2003可以提供很好的自动完成功能,大家可以充分的利用。

4、VS.net可以实现控件拖放加载,你可以在左边的"工具箱"--"HTML"里可以看到,直接点了,按住MOUSE左键直接拖到你想添加的地方。由于VS.net是针对.net的,所以一些HTML控件的属性中也体现了这些,比如"runat"这样的属性,在asp中是根本用不起来的。不过大多数控件的属性都是可以的,而且可以在"设计"视图下进行方便的设置属性好啦就说这么多吧. 大家可以慢慢体会:)有人说DW不错,我没有用过,不知道怎么样,也有人说DW有不少垃圾代码,呵呵:P

本文摘录自:http://www.81819.com/Article/2004-3-1/news2004-6-2535008925.html

 

posted @ 2006-03-15 00:08 冰冻热狗 阅读(264) | 评论 (4)编辑 收藏

2006年2月15日

C/C++程序内存泄漏检测

1. 包含头文件和定义:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
如果定义了_CRTDBG_MAP_ALLOC,打印出来的是文件名和行数等更加直观的信息。

2. 方法一
在程序入口写几个语句:
 int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
 tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
 _CrtSetDbgFlag( tmpFlag );
程序退出时,如果发现有内存泄漏,会自动在DEBUG OUTPUT窗口和DebugView中输出内存泄漏信息。

3. 方法二
在程序任何地方用以下语句:
_CrtDumpMemoryLeaks();
随时检测打印内存泄漏信息,如果有的话。不过此用法有个局限,对于一些全局函数,如果初始化时申请了内存,到程序结束时候才释放,此函数会一直把新申请的内存当作泄漏来对待。

4. 方法三
使用_CrtMemCheckpoint方法,在某段程序中统计泄漏信息。如下:
 _CrtMemState s1, s2, s3;
 _CrtMemCheckpoint( &s1 );
 
 // 程序段1:DO SOMETHING

 _CrtMemCheckpoint( &s2 );
 if ( _CrtMemDifference( &s3, &s1, &s2) )
  _CrtMemDumpStatistics( &s3 );

可以统计程序段1中是否发生了内存泄漏。

posted @ 2006-02-15 14:36 冰冻热狗 阅读(1619) | 评论 (0)编辑 收藏

2005年12月13日

#pragma pack和数据对齐问题

结构数据存放时默认按4对齐,考虑以下程序,输出结果为:sizeof(A)=12
typedef struct _A
{
    
int x;
    
char z[7];
}
A;

void main()
{
    
int len = sizeof(A);
    printf(
"sizeof(A)=%d\n", len);    // len = 12
}


使用 #pragma pack,设置数据按1对齐,此时输出结果为:sizeof(A)=11
#pragma pack(push)
#pragma pack(
1)
typedef 
struct _A
{
    
int x;
    
char z[7];
}
A;
#pragma pack(pop)

void main()
{
    
int len = sizeof(A);
    printf(
"sizeof(A)=%d\n", len);    // len = 11
}

posted @ 2005-12-13 14:36 冰冻热狗 阅读(6033) | 评论 (3)编辑 收藏

2005年12月6日

用CHttpFile实现简单的GET/POST数据

一、GET 数据,下载网页,文件等,用于可下载的文件,不能用于服务端运行的程序,比如.aspx文件等,否则会返回500错误。
CString strSentence, strWriteName="1.htm";
    CString strFileName
="http://localhost/InDesign/" + strWriteName;

    CInternetSession sess;
    CHttpFile
* fileGet;
    
try
    
{
        fileGet
=(CHttpFile*)sess.OpenURL(strFileName);
    }

    
catch(CException* e)
    
{
        fileGet 
= 0;
        
throw;
    }
    

    
if(fileGet)
    
{
        DWORD dwStatus;
        DWORD dwBuffLen 
= sizeof(dwStatus);
        BOOL bSuccess 
= fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);

        
if( bSuccess && dwStatus>= 200&& dwStatus<300 ) 
        

            CStdioFile fileWrite; 
            
if(fileWrite.Open(strWriteName, CFile::modeWrite|CFile::modeCreate))
            

                
while(fileGet->ReadString(strSentence))
                
{
                    fileWrite.WriteString(strSentence
+"\n");
                }

                fileWrite.Close();
                AfxMessageBox(
"下载完毕");
            }

            
else
            
{
                AfxMessageBox(
"本地文件"+strWriteName+"打开出错."); 
            }

        }

        
else 
        
{
            strSentence.Format(
"打开网页文件出错,错误码:%d", dwStatus);
            AfxMessageBox(strSentence);
        }

        fileGet
->Close();
        delete fileGet;
    }

    
else
        AfxMessageBox(
"不能找到网页文件!");

    sess.Close();

二、POST 数据,比如用于提交注册信息等
CString strHttpName="http://localhost/TestReg/RegForm.aspx"// 需要提交数据的页面
    CString strFormData = "username=abc&password=123";    // 需要提交的数据

    CInternetSession sess;
    CHttpFile
* fileGet;
    CString strHeaders 
= _T("Content-Type: application/x-www-form-urlencoded"); // 请求头

    
try
    
{
        fileGet
=(CHttpFile*)sess.OpenURL(strHttpName);//打开文件
    }

    
catch(CException* e)
    
{
        fileGet 
= 0;
        
throw;
    }


    CString strSentence, strGetSentence 
= "";
    
if(fileGet)
    
{
        DWORD dwStatus;
        DWORD dwBuffLen 
= sizeof(dwStatus);
        BOOL bSuccess 
= fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);
        
if( bSuccess && dwStatus>= 200 &&dwStatus<300 )
        

            BOOL result 
= fileGet->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
            
while(fileGet->ReadString(strSentence))    // 读取提交数据后的返回结果
            {
                strGetSentence 
= strGetSentence + strSentence + char(13+ char(10);
            }

            AfxMessageBox(strGetSentence); 
// 显示返回网页内容
        }

        
else 
        
{
            strSentence.Format(
"POST出错,错误码:%d", dwStatus);
            AfxMessageBox(strSentence);
        }

        
        fileGet
->Close();
        delete fileGet;
    }

    
else
        AfxMessageBox(
"不能找到网页文件!");

    sess.Close();

posted @ 2005-12-06 00:19 冰冻热狗 阅读(3509) | 评论 (1)编辑 收藏