当前位置:主页>Delphi教程>文章内容
delphi一句话帮助
来源: 作者: 发布时间:2007-04-29  
1.       如果想你的程序能够正确处理异常情况的话,请引用SysUtils.pas单元,否则即使程序使用了try。。。except。。。也不能正确捕获异常。
2.       定义常量字符串的一种方式
resourcestring
    aa='aaaa';
raise Exception.CreateRes(@aa);
3.       字符串常量数组的初始化
const  constarray:array [0..2] of string=(‘first’,’second’,’third’);
4.       结构体初始化
type  Tstructinit=record
   A1:integer;
   A2:array [0..2] of integer;
End;
Const m_structinit:Tstructinit=(A1:0;A2:(0,1,2));
5.       多维数组的长度
var  array2:array of array of integer;
setlength(array2,2,2);
6.       使用Create和New开辟的空间都存在于堆中,不能自动释放,建议使用FreeAndNil释放, 参数以及局部变量存在于栈中,自动释放。
7.       SizeOf不适合于对象,返回的总是4;对于固定类型可以正确返回.
8.       Create(nil)需要手工释放,Creat(self)会随着拥有者的释放而释放.
9.       动态改变已定义常量的值
procedure ChangeConst(const Const;var Value;Size:Integer);
begin
  Move((@Value)^,(@Constant)^,Size);
End;
10.   进行删除操作的时候循环使用DownTo,会避免错误.
11.   汉字的Ascii码>128,可以用它来判别是否为汉字
12.   dll编写中,需要使用Sharemem单元来引用BORLANDMM.DLL内存管理.
13.   PostMessage只将消息放到消息队列中,需要排队等待处理。
SendMessage绕过消息队列直接发送到窗口过程,等到消息处理返回值才返回.
14.   鼠标移入移出消息:CM_MOUSEENTER,CM_MOUSELEAVE
15.   关机消息WM_QUERYENDSESSION
16.   可以利用ThintWindow和类的方法ActivateHint来创建浮动窗体.
17.   调出文件属性对话框
uses ShellAPI;
function ShowFileProperties(FileName: String; Wnd: HWND):Boolean;
var
  sfi: TSHELLEXECUTEINFO;
begin
  with sfi do
  begin
    cbSize := SizeOf(sfi);
    lpFile := PAnsiChar(FileName);
    Wnd := Wnd;
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI;
    lpVerb := PAnsiChar('properties');
    lpIDList := nil;
    lpDirectory := nil;
    nShow := 0;
    hInstApp := 0;
    lpParameters := nil;
    dwHotKey := 0;
    hIcon := 0;
    hkeyClass := 0;
    hProcess := 0;
    lpClass := nil;
  end;
  Result := ShellExecuteEX(@sfi);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowFileProperties('c:\AA.txt', Handle);
end;
18.   更改系统时间
uses Windows,Dialogs,Forms;
var MyTime:TsystemTime;
begin
  FillChar(MyTime,sizeof(MyTime),#0);
  MyTime.wYear:=2003;
  MyTime.wMonth:=06;
  MyTime.wDay:=01;
  If not SetSystem(MyTime) then
Showmessage(‘Failure’);
   End;
19.   复制文件夹Xcopy
.   procedure Xcopy(SourceDir,DestinationDir:String);
    var
      Search : TSearchRec;
      Rec    : word;
Begin
      SourceDir := SourceDir + '\';
      Rec := FindFirst(SourceDir + '*.*', faAnyFile, Search);
      While Rec = 0 Do
      Begin
        If Search.Name[1] <> '.' Then
        Begin
          If (Search.Attr And faDirectory) = faDirectory Then
          Begin
            Windows.CreateDirectory(PChar(DestinationDir + '\' + Search.Name), nil);
            FileSetAttr(DestinationDir + '\' + Search.Name, FileGetAttr(SourceDir + '\' + Search.Name));
            X_Copy(SourceDir + '\' + Search.Name, DestinationDir + '\' + Search.Name);
          end
          Else
          Begin
            CopyFile(PChar(SourceDir + '\' + Search.Name),PChar(DestinationDir + '\' + Search.Name), True);
            FileSetAttr(DestinationDir + '\' + Search.Name, FileGetAttr(SourceDir + '\' + Search.Name));
            Application.ProcessMessages;
          end;
        end;
        Rec := FindNext(Search);
      end;
      FindClose(Search);
end;
20.   绘制透明位图
   procedure DrawTrans(DestCanvas: TCanvas; X,Y: smallint; SrcBitmap: TBitmap; AColor, BackColor: TColor);
var  ANDBitmap, ORBitmap: TBitmap;
         CM: TCopyMode;
         Src: TRect;
begin
      ANDBitmap:= NIL;
      ORBitmap:=  NIL;
      try
        ANDBitmap:= TBitmap.Create;
        ORBitmap:= TBitmap.Create;
        Src  := Bounds(0,0, SrcBitmap.Width, SrcBitmap.Height);
        with ORBitmap do begin
          Width:= SrcBitmap.Width;
          Height:= SrcBitmap.Height;
          Canvas.Brush.Color := clBlack;
          Canvas.CopyMode := cmSrcCopy;
          Canvas.BrushCopy(Src, SrcBitmap, Src, AColor);
        end;
        with ANDBitmap do begin
          Width:= SrcBitmap.Width;
          Height:= SrcBitmap.Height;
         Canvas.Brush.Color := BackColor;
         Canvas.CopyMode := cmSrcInvert;
         Canvas.BrushCopy(Src, SrcBitmap, Src, AColor);
       end;
       with DestCanvas do begin
         CM := CopyMode;
         CopyMode := cmSrcAnd;
         Draw(X,Y, ANDBitmap);
         CopyMode := cmSrcPaint;
         Draw(X,Y, ORBitmap);
         CopyMode := CM;
       end;
     finally
       ANDBitmap.Free;
       ORBitmap.Free;
     end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
    DrawTrans(Image1.Canvas, 0,0, Image2.Picture.Bitmap, clBlack, clSilver);
end;
21.   获取CPU速度
  function GetCpuSpeed: Extended;
var
    t, mhi, mlo, nhi, nlo: dword;
    shr32 : comp;
begin
    shr32 := 65536;
    shr32 := shr32 * 65536;
    t := GetTickCount;
    while t = GetTickCount do ;
      asm
      DB 0FH,031H // rdtsc
      mov mhi,edx
      mov mlo,eax
    end;
    while GetTickCount < (t + 1000) do ;
      asm
      DB 0FH,031H // rdtsc
      mov nhi,edx
      mov nlo,eax
    end;
    Result := ((nhi * shr32 + nlo) - (mhi * shr32 + mlo)) / 1E6;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
    label1.Caption := FloatToStr(GetCpuSpeed) + 'mhz';
end;
   
暂时只是写了这么多,以后会逐步更新添加
 

 
上一篇:Delphi的组件读写机制(一)   下一篇:我观MIDAS
 
  相关文章
·Delphi的组件读写机制(一)
·我观MIDAS
·使用XMLDocment遍历CSDN论坛帖子回复
·新世纪的五四运动:程序白话文(1)
·Delphi的组件读写机制(三)
·公布TstringGrid增强控件TcbStrGrid源
·使用ClientSocket控件实现CSDN论坛帖子
·关于DBGRIDEH导出数据到CSV
·Delphi中如何编写图像解析组件
·数据完整性(数据的似真性而非正确或者
·Delphi+汇编例子1(求和的比较)
·D7下的只能输入数字的控件(类似PB的Ma
 
【关闭窗口】
推荐本站资源
最新文章