博文

TIOBE 5月份编程语言排行榜(2011-06-13 13:18:00)

摘要: 前10名编程语言走势图: ......

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

一次调用接口函数遇到麻烦后的经验教训(2010-03-31 16:25:00)

摘要:一次在调用接口函数获取快捷方式信息时,总是遇到意外,一直查来查去查了好半天,原代码如下: function GetShortCutImf(LinkFileName:string; var ShortCutImf:TShortCutImf):boolean;
var
vShellLink: IShellLink;
vPersistFile: IPersistFile;
vUnKnown: IUnKnown;
vWin32FindData: TWin32FindData;
vBuffer: array[0..100] of Char;
pword:Word;
PCmd:integer;
ffd:WIN32_FIND_DATA;
ret:Longint;
begin
Result:=true;
try
  vUnKnown := CreateComObject(CLSID_ShellLink);
  vShellLink := vUnKnown as IShellLink;
  vPersistFile := vUnKnown as IPersistFile;
  if vPersistFile.Load(PWideChar(LinkFileName),0)=s_OK then//就在这里总是出错
    begin
    ret:=vShellLink.GetPath(vBuffer,SizeOf(vBuffer),ffd,SLGP_UNCPRIORITY);  //Pchar(s),MAX_PATH
   ....... 最后终于发现一个小细节,在PWideChar(LinkFileName)上,原来以为这样简单转换,就可以把ANSI字符串转为WIDESTRING指针,结果系统豪不转换的直接把LinkFileName的指针当做widestring指针传过去了,怪不得系统老执行不下去。看来一个转换的语句还是不可少啊,增加后问题解决,特立此备忘。 function GetShortCutImf(LinkF......

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

如何使得程序在状态栏中隐藏显示(2009-11-15 16:28:00)

摘要:目的就是程序的界面不动(无需最小化或者HIDE)但是在状态栏中的程序按钮消失。 一般来说,使用下面两个语句就可以了。 ShowWindow(Application.Handle,SW_NORMAL); //恢复显示 ShowWindow(Application.Handle,SW_HIDE);//隐藏 但是这两个语句不是百试百灵,我做的一个程序就不灵光了,怎样都找不出来原因,好容易在网上找到另外一个更加稳定的实现语句,如下: 隐藏时语句:
    ShowWindow(Handle,SW_HIDE);
    dwExStyle:=GetWindowLong(Handle,GWL_EXSTYLE);
    SetWindowLong(Handle,GWL_EXSTYLE,dwExStyle OR WS_EX_TOOLWINDOW
      AND NOT WS_EX_APPWINDOW);
    ShowWindow(Handle,SW_SHOW); 恢复时语句:
    ShowWindow(Handle,SW_HIDE);
    dwExStyle:=GetWindowLong(Handle,GWL_EXSTYLE);
    SetWindowLong(Handle,GWL_EXSTYLE,dwExStyle AND NOT WS_EX_TOOLWINDOW
      or WS_EX_APPWINDOW);
    ShowWindow(Handle,SW_SHOW); 注意里面的句柄不再是APPLICATION的,而是窗体FORM的了,看起来好像罗里罗唆的,但是WORK!,而且不这样做还真的不行,晕死。  ......

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

TIOBE 2009年4月流行开发语言排名(2009-04-14 08:55:00)

摘要:TIOBE开发语言排行榜日前宣布了2009年4月流行开发语言的排名结果: 作为对比,以下是2008年4月流行开发语言的排名: (转自:http://news.csdn.net/a/20090409/210296.html)......

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

[zt]delphi常用函数(2008-06-04 08:54:00)

摘要:Abort 引起放弃的意外处理
Abs 绝对值函数
AddExitProc 将一过程添加到运行时库的结束过程表中
Addr 返回指定对象的地址
AdjustLineBreaks 将给定字符串的行分隔符调整为CR/LF序列
AllocMem 在堆栈上分配给定大小的块
AnsiCompareStr 比较字符串(区分大小写)
AnsiCompareText 比较字符串(不区分大小写)
AnsiLowerCase 将字符转换为小写
AnsiUpperCase 将字符转换为大写
Append 以附加的方式打开已有的文件
ArcTan 余切函数
AssignFile 给文件变量赋一外部文件名
Assigned 测试函数或过程变量是否为空
BlockRead 读一个或多个记录到变量中
BlockWrite 从变量中写一个或多个记录
ChangeFileExt 改变文件的后缀
ChDir 改变当前目录
Chr 返回指定序数的字符
CompareStr 比较字符串(区分大小写)
Concat 合并字符串
Copy 返回一字符串的子串
Cos 余弦函数
Date 返回当前的日期
DateTimeToFileDate 将DELPHI的日期格式转换为DOS的日期格式
DateTimeToStr 将日期时间格式转换为字符串
DateTimeToString 将日期时间格式转换为字符串
DateToStr 将日期格式转换为字符串
DayOfWeek 返回星期的数值
Dec 递减变量值
DecodeDate 将日期格式分解为年月日
DecodeTime 将时间格式分解为时、分、秒、毫秒
Delete 从字符串中删除子串
DiskFree 返回剩余磁盘空间的大小
......

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

开发语言排行榜(2008-04-25 10:41:00)

摘要:TIOBE开发语言排行榜日前宣布了2008年4月流行开发语言的排名结果,Java 和C 依然占据榜首一二名的位置,可喜的是Delphi 保持了继续上升的良好态势。详情见下图。一直在用delphi来“手工制作”的自己的各种小玩意,一个懂行的同事总是劝我说,它已经是明日黄花,放弃也罢。可是我实在找不到一个可以这样轻易方便,适合我这样的业余人士使用的语言工具了,vc++,vc#不是没用过,但实在是深奥麻烦啊。希望DELPHI继续往上爬呀爬。 10种语言使用情况: (源自:http://news.csdn.net/n/20080411/115141.html)......

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

系统 WM_ 消息列表及说明(2008-04-14 14:56:00)

摘要:WM_NULL=$0000;
WM_CREATE=$0001; 应用程序创建一个窗口
WM_DESTROY=$0002; 一个窗口被销毁
WM_MOVE=$0003; 移动一个窗口
WM_SIZE=$0005; 改变一个窗口的大小
WM_ACTIVATE=$0006; 一个窗口被激活或失去激活状态;
WM_SETFOCUS=$0007; 获得焦点后
WM_KILLFOCUS=$0008; 失去焦点
WM_ENABLE=$000A; 改变enable状态
WM_SETREDRAW=$000B; 设置窗口是否能重画
WM_SETTEXT=$000C; 应用程序发送此消息来设置一个窗口的文本
WM_GETTEXT=$000D; 应用程序发送此消息来复制对应窗口的文本到缓冲区
WM_GETTEXTLENGTH=$000E; 得到与一个窗口有关的文本的长度(不包含空字符)
WM_PAINT=$000F; 要求一个窗口重画自己
WM_CLOSE=$0010; 当一个窗口或应用程序要关闭时发送一个信号
WM_QUERYENDSESSION=$0011; 当用户选择结束对话框或程序自己调用ExitWindows函数
WM_QUIT=$0012; 用来结束程序运行或当程序调用postquitmessage函数
WM_QUERYOPEN=$0013; 当用户窗口恢复以前的大小位置时,把此消息发送给某个图标
WM_ERASEBKGND=$0014; 当窗口背景必须被擦除时(例在窗口改变大小时)
WM_SYSCOLORCHANGE=$0015; 当系统颜色改变时,发送此消息给所有顶级窗口
WM_ENDSESSION=$0016; 当系统进程发出
WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束
WM_SYSTEMERROR=$0017;
WM_SHOWWINDOW=$0018; 当隐藏或显示窗口是发送此消息给这个窗口
WM_ACTIVATEAPP=$001C; 发此消息给应用程序哪个窗口是激活的,哪个是非激活的;
WM_FONTCHANGE=$001D; 当系统的字体资源库变化时发送此消息给所有顶级窗口......

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

delphi编程时彻底清除无用的DCU文件(2008-02-14 13:48:00)

摘要:今天在清理程序文件夹中的垃圾文件后,发现在delphi中原本能运行程序却不能编译进行,系统提示在DPR文件中File Notfound 某个DCU文件,这个文件是个垃圾,已经被我删除了,我在DPR文件中根本没有用到这个文件的语句。 经过反复试验,终于知道了怎么处理: 把程序文件夹中的所有DCU文件都删除,然后重新编译,这样系统就终于正确指示出引用这个DCU文件的位置了,它其实不在DPR文件内,而是在某个PAS文件内。......

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

delphi长循环时能响应外部命令的语句(2007-12-28 11:42:00)

摘要:procedure TForm1.Button1Click(Sender: TObject); 
begin 
  b:=true; 
  while(b) do 
  begin 
    Caption:='Working'; 
    Application.ProcessMessages; 
  end; 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  b:=false; 
  Caption:='Stop';
end; ......

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

学习DELPHI,一些比较少用的知识(2007-12-27 11:18:00)

摘要:Delphi笔记(一些比较少用的知识) 1、随机函数
一般是用Random函数,并在之前用Randomize初始化,原来还有:
RandomFrom 从参数指定的数组中随机选出一个数值(整数、字符串等)
例:RandomFrom(['D1','D2','D3','D4']) RandomRange 在整数范围随机产生一个整数。
例:X:=RandomRange(20,50);// 20<=X<=50 X为整数 2、时间函数
FormatDateTime 格式化字符串
例:FormatDateTime('yyyy年 mm月 dd日 hh时 nn分 ss秒',now())
DecodeDate 将日期分解为年月日
例:DecodeDate(now(),Year,Month,Day)//Year,Month,Day:word
同理还有 DecodeTime(now(),hour,minute,second,msecond)
反函数是 EncodeDate(Year,Month,Day:word):TDateTime;
         EncodeTime(hour,minute,second,msecond:word):TDateTime; 3、在循环中用到的中断命令
Abort 无记录异常
Break 中断循环
Continue 跳到下一循环
Exit 跳出函数过程
RunError 中止程序
Halt 中止程序,返回操作系统
4、其他函数
Odd 判断奇数偶数
Pred 前一序号的值
Succ 后一序号的值 5、类的属性
属性的索引 function GetX(Const Index:Integer):Integer;
Procedure SetX(Const Index,Value:Integer); property A:integer index(0) read GetX write SetX;
property B:integer index(1) read GetX write SetX; A,B共同使用......

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