大悟还俗

邮箱 key_ok@qq.com 我的收集 http://pan.baidu.com/share/home?uk=1177427271
  新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Delphi

摘要:unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ImgList, ExtCtrls;type TForm2 = class(TForm) ImageList1: TImageList; Panel1: TPanel; procedure FormCreate(Sender: TObject); private { Private declarations } public { Publi... 阅读全文

posted @ 2013-10-21 14:26 大悟还俗_2 阅读(338) 评论(0) 推荐(0)

摘要:procedure TForm1.Button1Click(Sender: TObject);var i1,i2:Integer; b:array [0..3] of Byte absolute i1; // b 在这里跟 i1 共用地址begin i1 := 1234; i2 := MakeLong(MakeWord(b[0],b[1]),MakeWord(b[2],b[3])); // 在内存中i1其实是反过来存储, // 普通情况表达一个数字是“高位+低位”,而内存中是“低位+高位”的表达方式 // MakeXXX 函数就是实现了这种变化 if i1 = i2 then ... 阅读全文

posted @ 2013-10-21 14:25 大悟还俗_2 阅读(358) 评论(0) 推荐(0)

摘要:以下代码可以看到 Int64Rec Int64procedure TForm1.Button2Click(Sender: TObject);var ii1,ii2,ii3:Int64;Hi,Lo:Cardinal;temp:Int64Rec;begin ii1 := 123456; Hi := Int64Rec(ii1).Hi; Lo := Int64Rec(ii1).Lo; ii2 := MakeROP4(Lo,Hi); // 这个函数没有什么实质的意义,只是为了表达 Hi + Lo = Int64 if ii1 = ii2 then ShowMessage('确认'); . 阅读全文

posted @ 2013-10-21 14:23 大悟还俗_2 阅读(512) 评论(0) 推荐(0)

摘要:PerformEraseBackground 擦除背景的简单方法(外带ThemeServices例子) 在查这个函数的时候,顺便看到了有趣的代码。怎么使用 Themes 。unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ImgList, ExtCtrls;type TForm2 = class(TForm) ImageList1: TImageList; Panel1: TPanel; procedur... 阅读全文

posted @ 2013-10-21 14:03 大悟还俗_2 阅读(502) 评论(0) 推荐(0)

摘要:我一直感觉 Delphi 下的Bit操作不是很好使,所以一直屏蔽着这方面的学习。不过最近收集整理了一下代码。原因是这样的。由于某个需求被分解成 在 0~n(不定) 中,有几个数字被置换成了“true”由于我自己写了一个类来管理某个Record,而这个Record是用Variant来作为参数。(类似TDataSet)。开始的时候,我想着吧,用 array of Boolean,可惜Variant 中怎么v:=VarCreateVariant([0,n],varBoolean)不会操作 v[10]:=true 这种事情。于是干脆变成了 array of Byte声明了8个array of Byte 阅读全文

posted @ 2013-10-21 14:00 大悟还俗_2 阅读(643) 评论(0) 推荐(0)

摘要:Longint = IntegerWPARAM = IntegerLPARAM = IntegerLRESULT = IntegerFARPROC = Pointerfunction MakeWord(a, b: Byte): Word;function MakeLong(a, b: Word): Longint;function MakeWParam(l, h: Word): WPARAM;function MakeLParam(l, h: Word): LPARAM;function MakeLResult(l, h: Word): LRESULT;function PointToLP.. 阅读全文

posted @ 2013-10-21 13:53 大悟还俗_2 阅读(429) 评论(0) 推荐(0)

摘要:作为指针是相同的,解析的内容,稍微有点区别。var s:String;P:PChar;B:PByte;a:Integer;begins:='1234';P:=PChar(s);//按chr保存for a:=0 to 7 dobeginMemo1.Lines.add(P^);Inc(P);end;B:=PByte(s);//按Byte保存for a:=0 to 7 dobeginMemo1.Lines.add(IntToStr(B^)+','+Chr(B^));Inc(B);end;end; 阅读全文

posted @ 2013-10-21 13:52 大悟还俗_2 阅读(464) 评论(0) 推荐(0)

摘要:执行控制台程序并且获得它的输出结果 procedure CheckResult(b: Boolean); begin if not b then Raise Exception.Create(SysErrorMessage(GetLastError)); end; function RunDOS(const Prog, CommandLine,Dir: String;var ExitCode:DWORD): String; var HRead,HWrite:THandl... 阅读全文

posted @ 2013-10-21 13:50 大悟还俗_2 阅读(310) 评论(0) 推荐(0)

摘要:function PauseConsole(Prompt: PAnsiChar): boolean;varhStdIn, hStdOut: THandle;dwRd, dwWr, i: Cardinal;cBuf: array [0..128] of TInputRecord;beginresult := false;hStdIn := GetStdHandle(STD_INPUT_HANDLE);hStdOut := GetStdHandle(STD_OUTPUT_HANDLE);if ((hStdIn 0) and (hStdOut 0)) thenbeginWriteFile(hSt.. 阅读全文

posted @ 2013-10-21 13:36 大悟还俗_2 阅读(704) 评论(0) 推荐(0)

摘要:ByteType('123你好吗',1)=mbSingleByte//单字节ByteType('123你好吗',4)=mbLeadByte//双字节字符的第一个字符ByteType('123你好吗',5)=mbTrailByte//双字节字符的第二个字符function IsMBCSChar(const ch: Char): Boolean;beginResult := (ByteType(ch, 1) mbSingleByte);end;是否中文(简体,繁体) 阅读全文

posted @ 2013-10-21 13:33 大悟还俗_2 阅读(431) 评论(0) 推荐(0)

摘要:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,Clipbrd;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }public 阅读全文

posted @ 2013-10-21 13:32 大悟还俗_2 阅读(403) 评论(0) 推荐(0)

摘要:How to install an INF file using DelphiIf you need to install an "inf" file using Delphi, you could use the next code:~~~~~~~~~~~~~~~~~~~~~~~~~{Usage:InstallINF('C:\XYZ.inf', 0) ;}usesShellAPI;function InstallINF(const PathName: string; hParent: HWND): Boolean;varinstance: HINST;be 阅读全文

posted @ 2013-10-21 13:32 大悟还俗_2 阅读(199) 评论(0) 推荐(0)

摘要:aa.CopyFromDataSet(acdsBase);//克隆一个,与LoadFromDataSet区别,如果设置了Field,那么L只会导入设置的部分,而C则是全部复制过来TdxMemData不能使用Filter。ID:=aa.FieldByName('ID').AsString;aa.Filter:='ParentID='+QuotedStr(ID);if aa.FindFirst thenrepeatPrompt(aa.FieldByName('Name').AsString);until aa.FindNext=false;无效。或许 阅读全文

posted @ 2013-10-21 13:29 大悟还俗_2 阅读(957) 评论(0) 推荐(0)

摘要:VarIsOrdinalVarIsFloatVarIsNumeric就三个。第一个 是否int,boolean第二个 是否Double,Simple,Currency第三个 是否Ordinal和Float。就是这样。 阅读全文

posted @ 2013-10-21 13:29 大悟还俗_2 阅读(583) 评论(0) 推荐(0)

摘要:uses CommCtrl; -- 很有料!!!procedure TForm1.Button1Click(Sender: TObject);var ebt: TEditBalloonTip;beginwith ebt dobegincbStruct := SizeOf(ebt);pszTitle := 'title';pszText := 'Text';ttiIcon := 1;end;SendMessage(Edit1.Handle,EM_SHOWBALLOONTIP,0,Longint(@ebt))end;// Balloon【Controls】var s 阅读全文

posted @ 2013-10-21 13:25 大悟还俗_2 阅读(372) 评论(0) 推荐(0)

摘要:type intArr=array of Integer;procedure TfrmMainDA.Button2Click(Sender: TObject);var aa:intArr;bb:intArr;vv:Variant;a:Integer;s:String;beginSetLength(aa,3);aa[0]:=1;aa[1]:=10;aa[2]:=100;DynArrayToVariant(vv,aa,TypeInfo(intArr));DynArrayFromVariant(Pointer(bb),vv,TypeInfo(intArr));for a:=Low(bb) to Hi 阅读全文

posted @ 2013-10-21 13:24 大悟还俗_2 阅读(508) 评论(0) 推荐(0)

摘要://TARec--->Variantfunction RecordToVariant(value:TParamRecord):OleVariant;var P:Pointer;beginResult:=VarArrayCreate([0,sizeof(TParamRecord)],varByte);P:=VarArrayLock(Result);Move(value,P^,sizeof(P));VarArrayUnlock(Result);end;//OleVariant---->TARecfunction VariantToRecord(value:OleVariant):TPa 阅读全文

posted @ 2013-10-21 13:22 大悟还俗_2 阅读(287) 评论(0) 推荐(0)

摘要:用 TStrings的Object 保存类的方式,来保存除了Items以外的值。今天才发现,原来,TStrings下,还有 Items,Values,Items.Names,Items.Values,Items.Strings之分。大家赶快去试试吧。如果只是简单的String类型的,用这些,足够的了。大家不用试了。我自己都快忘记,写了段。procedure TfrmRegManage.Button1Click(Sender: TObject);var sl:TStringList;a:Integer;beginsl:=TStringList.Create;for a:=0 to 10 dosl 阅读全文

posted @ 2013-10-21 13:19 大悟还俗_2 阅读(503) 评论(0) 推荐(0)

摘要:利用GetClass与RegisterClass可以实现根据字符串来实例化具体的子类,这对于某些需要动态配置程序的场合是很有用的。其他的应用如子窗体切换,算法替换等都能得到应用。unitExample1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)Button1:TButton;procedureButton1Click(Sender:TObject);privatepublicend;ILog=in 阅读全文

posted @ 2013-10-21 13:18 大悟还俗_2 阅读(288) 评论(0) 推荐(0)

摘要:很好理解type TMessageHandler = class //使得回车消息转换成Tab消息 class procedure AppMessage(var Msg:TMsg;var Handled:Boolean);end;var Form1: TForm1;implementation{$R *.dfm}class procedure TMessageHandler.AppMessage(var Msg: TMsg; var Handled: Boolean);begin if Msg.message=WM_KEYDOWN then if (Msg.w... 阅读全文

posted @ 2013-10-21 13:15 大悟还俗_2 阅读(257) 评论(0) 推荐(0)