博文

honkerhero的技术专栏(C#技术-WinForm)(2007-07-13 14:48:00)

摘要:http://blog.csdn.net/honkerhero/......

阅读全文(1746) | 评论:0

[编程思想]大道至简--流于形式的沟通(强烈推荐)(2007-07-13 14:20:00)

摘要:   第4章  流于形式的沟通
          “足下求速化之术,不于其人,乃以访愈,是所谓借听于聋,求道于盲。”
                                                    ——唐·韩愈《答陈生书》
1.  客户不会用 C,难道就会用 UML 吗?
            我们总是要先接触客户的,是的,如果不这样,我们将无法确知要做什么。 
            作为开发人员,可能更希望客户能学习或者精通 C语言,这样客户就知道开发人员正在做什么,以及有多么地勤劳。或者,这样的客户还能以 C 语言的方式告诉开发人员他们究竟想要什么。
            然而要求客户学习 C 语言明显是自杀式的行为。在客户(的代表)学会用 C语言来向开发人员描述他们的需求之前,可能他就已经被老板开掉了。因此没有客户会笨愿意用 C 语言来描述他们的需求。             C 语言是......

阅读全文(1661) | 评论:0

C++]用VC++来设置获得注册表的键值(问题解决)(2007-07-13 14:13:00)

摘要: 下面这个是基于MFC的基本对话写的。。  演示设置注册表的3中类型的值和获得注册表的3中类型的值。。 分别用RegSetValueEx()来设置,RegQueryValueEx()函数来获得。   void CUserRegDlg::OnOK()
{
 // TODO: Add extra validation here
 
 CString str = "hello reg";
 DWORD regd = 100;
 BYTE bValues[] = { 0x11, 0x12, 0x55 };  BYTE Vals[100];
 DWORD lenIt = 100;
 HKEY hk;  // 打开注册表如果没有则创建, 返回注册表句柄于hk
  if ( ::RegCreateKey( HKEY_LOCAL_MACHINE, "SOFTWARE\\Test\\", &hk ) == ERROR_SUCCESS )
 {
  AfxMessageBox( "打开注册表" );
 }  // 保存参数到注册表
 try
 {
  /*
  RegSetValueEx( 根键句柄, 值项名称, 保留参数补0即可, 数据类型, 所设置的数据, 数据长度 )
  用来设置注册表键特定的值,如果数据不存在则创建它  
  */
  /* 保存字符值到注册表 */
  if ( ::RegSetValueEx( hk, "Server", 0, REG_SZ, (LPBYTE)(LPCSTR)str, str.GetLength( ) +1 ) == ERROR_SUCCESS )
  {
   AfxMessageBox( "字符值参数保存成功"......

阅读全文(2763) | 评论:0

[WIN编程]WINDOWS数据类型的转换大全(转)(2007-07-13 14:11:00)

摘要:WINDOWS数据类型的转换


一、其它数据类型转换为字符串

短整型(int)
itoa(i,temp,10);//将i转换为字符串放入temp中,最后一个数字表示十进制
itoa(i,temp,2); //按二进制方式转换

长整型(long)
ltoa(l,temp,10);

浮点数(float,double)
用fcvt可以完成转换,这是MSDN中的例子:
int decimal, sign;
char *buffer;
double source = 3.1415926535;
buffer = _fcvt( source, 7, &decimal, &sign );
运行结果:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
decimal表示小数点的位置,sign表示符号:0为正数,1为负数

CString变量
str = "2008北京奥运";
buf = (LPSTR)(LPCTSTR)str;

BSTR变量
BSTR bstrValue = ::SysAllocString(L"程序员");
char * buf = _com_util::ConvertBSTRToString(bstrValue);
SysFreeString(bstrValue);
AfxMessageBox(buf);
delete(buf);

CComBSTR变量
CComBSTR bstrVar("test");
char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str);
AfxMessageBox(buf);
delete(buf);

_bstr_t变量
_bstr_t类型是对BSTR的封装,因为已经重载了=操作符,所以很容易使用
_bstr_t bstrVar("test");
const char *buf = bstrVar;///......

阅读全文(1615) | 评论:0

[Win编程]pragma指令简介(转)(2007-07-13 14:08:00)

摘要:pragma指令简介

在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.
下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!

一. message 参数。

message
它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:

#pragma message(“消息文本”)

当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。
当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。

假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法
#ifdef _X86

#pragma message(“_X86 macro activated!”)

#endif

当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_ X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了

二. 另一个使用得比较多的#pragma参数是code_seg。

格式如:

#pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节为.text节
如果code_seg没有带参数的话,则函数存放在.text节中
push (可选参数) 将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名
pop(可选参数) 将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名
identifier (可选参数) 当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被......

阅读全文(1306) | 评论:0

[XML]XML中20个热点问题(转)(2007-07-13 14:04:00)

摘要:XML中20个热点问题(转载)
这里的20个有关XML的热门问题能够让你成为一XML“专家”,或至少让你能够在今后看准XM
L的发展方向。 1 什么是XML? 11 OSD和CDF与XML的关系如何?
2 XML何以重要? 12 电子商务(e-commerce)和XML?
3 SGML、HTML和XML有什么联系? 13 XML中的层叠样式?
4 如何实现XML? 14 XML如何改进超链接?
5 什么是文件类型定义(DTD)? 15 服务器上支持XML吗?
6 什么是格式完整和有效的文件? 16 谁应该学习XML?
7 如何在浏览器中阅读XML? 17 有哪些编写XML的工具可供我使用?
8 RDF和XML有何联系? 18 XML的国际化?
9 Netscape浏览器中如何实现XML? 19 XML的未来在哪里?
10 Microsoft浏览器中如何实现XML? 20 哪里能学到更多的XML知识?
1.什么是XML? XML代表扩展标识语言(Extensible Markup Language). 由 World Wide Web Consortium (W
3C)带头, XML在二月中期成为一个正式的规范. XML开发者会告诉你XML不是一种语言,而是一个定义其他语言的系统. 你可能已经听说过, 或用过这些语言中的一种,--如Microsoft支持"推技术"的 Channel Definition Format (CD
F). 正从事于XML相关建议工作的W3C, 称XML为"表达数据中结构 的共同语法". 结构化的数据指
的是其内容,意义或应用被标记的数据. 例......

阅读全文(1803) | 评论:0

[C]C实现定时删除文件(2007-07-13 13:55:00)

摘要:#include "stdio.h"
#include "string.h"
#include "time.h"
#include "stdlib.h" int main( void )
{
 char *strTime;
 time_t myTime; // long型时间
 bool isDel;  time( &myTime );   // 取得时间
 strTime = ctime( &myTime ); // 转换为字符串
 printf( "%s", strTime ); // 显示时间
 
isDel = false; while( !isDel )    // 程序一直运行,直到删除了文件才结束次程序。
{
          /* 如果为18:00点则删除文件 */
          if ( ( strTime[11] == '1' ) && ( strTime[12] == '8' ) && ( strTime[14] == '0' ) && ( strTime[15] == '0' ) )
          {
                  system( "type aaa.txt" ); // 显示文件的内容
             ......

阅读全文(2410) | 评论:0

[VC]VC风险投资家常问的问题(2007-07-13 13:52:00)

摘要:1)   你的眼光是什么?
     *   你的远见是什么?
     *   你要解决什么问题?对象是谁?
     *   你将来想要成为什么样的人?
2)   你的市场机会是什么?市场有多大?
     *   您目标的市场有多大?发展有多快?
     *   这个市场有多成熟,或多不成熟?
     *   你是否有资本成为这个市场前两三位?

3)   介绍你的产品和服务
     *   你的产品或服务是什么?
     *   解决了用户的什么问题?
     *   你的产品或服务有什么特别之处?

4)   你的用户是谁?
     *   谁是现在的用户?
     *   谁是目标的用户?
     *   理想的用户是什么样的?
     *   谁会付费?
     *   介绍一下某个具体用户的例子

5)   你的价值主张是什么?
     *   你给用户提供了什么价值?
     *   使用/买你的产品,用户的投资回收率是什么?
     *   你解决了什么问题?
     *   你是销售维他命,阿司匹林,还是消炎药?(奢侈品,有益的东西,还是必需品?)

6)   你如何销售?
     *   销售程序是什么?周期有多长?
     *   你的销售和市场方针是什么?
     *   你当前的销售链是什么?

7)   你怎么吸引客户?
     *   争取每个用户......

阅读全文(1518) | 评论:0

[面试题]C/C++应聘常见面试试题深入剖析(转)(2007-07-13 13:51:00)

摘要:试题:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”

  函数头是这样的:

//pStr是指向以'\0'结尾的字符串的指针
//steps是要求移动的n

void LoopMove ( char * pStr, int steps )
{
 //请填充...
}
  解答:

  正确解答1:

void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN];
 strcpy ( tmp, pStr + n );
 strcpy ( tmp + steps, pStr);
 *( tmp + strlen ( pStr ) ) = '\0';
 strcpy( pStr, tmp );
}
  正确解答2:

void LoopMove ( char *pStr, int steps )
{
 int n = strlen( pStr ) - steps;
 char tmp[MAX_LEN];
 memcpy( tmp, pStr + n, steps );
 memcpy(pStr + steps, pStr, n );
 memcpy(pStr, tmp, steps );
}
  剖析:

  这个试题主要考查面试者对标准库函数的熟练程度,在需要的时候引用库函数可以很大程度上简化程序编写的工作量。

  最频繁被使用的库函数包括:

  (1) strcpy

  (2) memcpy

  (3) memset

  试题6:已知WAV文件格式如下表,打开一个WAV文件,以适当的数据结构组织WAV文件头并解析WAV格式的各项信息。

  WAVE文件格式说明表

......

阅读全文(1289) | 评论:0

[面试题]C/C++面试题大汇总(转)(2007-07-13 13:50:00)

摘要: 最近因为找工作,收集了很多C语言方面方面的面试题以及答案。现在新工作搞定了,决定把这些资料发出来,送给有需要的朋友,免得再象我一样到处搜寻,实在辛苦。 发布之前先申明两点:
    1 所有资料来自网络(主要是CSDN),本人只是收集和转发。
    2 所有问题解答(尤其是代码)只是参考,不保证正确。 先发基本问题,再发编程问题.......... 想成为嵌入式程序员应知道的0x10个基本问题:
预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
         #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4) 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
        #define MIN(A,B) ((A) <= (B) ? (A) : (B))
这个测试是为下面的目的而设的:
1) 标识#define在宏中应用的基本知识。这是很重要的。因为在  嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3) 懂得在宏中......

阅读全文(2089) | 评论:0