张志峰的博客

水滴石川,积少成多。

导航

随笔分类 -  Delphi

摘要:DELPHI7已经考虑到了移植到点NET的问题,在点NET里,指针是不安全的。至于为什么有的人遇到,有的人没有遇到,那是因为各人的编译选项不同。在Project菜单下选Options“CompilerMessages”,最下面三个选项就是了...........如果程序不移植到点NET,那么把这三个选项的勾取了(默认也是取了的)。 阅读全文

posted @ 2013-07-25 16:53 ╰★张志峰★╮ 阅读(1486) 评论(0) 推荐(0) 编辑

摘要://Char 类型与其编码值的转换:varb: Byte;c: Char;beginb := Ord('A'); {返回: 65}b := Ord(#65); {返回: 65}b := Ord($41); {返回: 65}b := Ord(#$41); {返回: 65}b := Byte('A'); {返回: 65}b := Byte(#65); {返回: 65}b := Byte($41); {返回: 65}b := Byte(#$41); {返回: 65}c := Chr(65); {返回: A }c := Chr($41); {返回: A }c := Ch 阅读全文

posted @ 2013-07-16 17:59 ╰★张志峰★╮ 阅读(7003) 评论(0) 推荐(0) 编辑

摘要:; not allowed before ELSEElSE前不允许有“;” clause not allowed in OLE automation section在OLE自动区段不允许“”子句 is not a type identifier不是类型标识符 not previously declared as a PROPERTY前面没有说明PROPERTYGOTO leads into or out of TRY statement GOTO进入或超出TRY语句的范围 clause expected, but found要求子句,但出现16-Bit fixup encountered .. 阅读全文

posted @ 2013-07-01 10:01 ╰★张志峰★╮ 阅读(888) 评论(0) 推荐(0) 编辑

摘要:delphi程序只允许运行一个实例的三种方法:一、 创建互斥对象 在工程project1.dpr中创建互斥对象Program project1UsesWindows,Form,FrmMain in 'FrmMain.pas' {MainForm}; {$R *.res} var hAppMutex: THandle; //声明互斥变量 begin hAppMutex := CreateMutex(nil, false,’projectname’); //创建互斥对象projectname工程名称 if ( (hAppMutex <> 0) and (GetLastE 阅读全文

posted @ 2013-05-24 13:50 ╰★张志峰★╮ 阅读(870) 评论(0) 推荐(1) 编辑

摘要:Const ArrayPeriod: array[0..8] of string = ('[QJ]', '[QJ.ND]', '[QJ.BND]', '[QJ.JD]', '[QJ.YD]', '[QJ.BYD]', '[QJ.X]', '[QJ.Z]', '[QJ.R]');当作常量用。var //存储单位的固定字段 ArrayDWFixFLD: array[0..4] of string =('P_CODE', 'DW_CO 阅读全文

posted @ 2012-07-06 15:49 ╰★张志峰★╮ 阅读(665) 评论(0) 推荐(0) 编辑

摘要:ForceDirectories() ForceDirectories(Dir)是Delphi和bcb中用来创建一个目录的函数。 支持多级目录。 编辑本段 说明 bool ForceDirectories(AnsiString Dir); 返回:返回创建目录是否成功。 参数:Dir是创建目录路径。如:"F:\\a\\b\\c" 编辑本段 与CreateDir区别 ForceDirectories创建多级目录,父目录不必存在。而CreateDir只创建最后一级目录,父目录必须存在。相当于Java中File中的mkdirs和mkdir的区别。 编辑本段 例子 String di 阅读全文

posted @ 2012-06-12 10:55 ╰★张志峰★╮ 阅读(816) 评论(0) 推荐(0) 编辑

摘要:若系统中安装了 VMWare 或者某些 VPN 客户端软件,则会出现若干虚拟网卡。它们在形式上与物理网卡几乎没有区别。 ipconfig 将它们与本地物理网卡等同对待。 那如何在如何区分虚拟网卡还是物理网卡呢?有些人建议使用 MAC 地址中的 "locally administread bit" 来区分。但是事实上不能100%区分,在win2000之后的系统基本是行不通的。 http://hi.baidu.com/xzq2000/blog/item/43b686d672cd762f07088b95.html有人用GetAdaptersInfo 可以获得本机所有网卡的信息,然 阅读全文

posted @ 2012-06-06 10:46 ╰★张志峰★╮ 阅读(2691) 评论(0) 推荐(0) 编辑

摘要:delphi 获取网卡信息(支持多网卡) unit LGetAdapterInfo;interfaceusesWindows, SysUtils, Classes;constMAX_HOSTNAME_LEN = 128; { from IPTYPES.H }MAX_DOMAIN_NAME_LEN = 128;MAX_SCOPE_ID_LEN = 256;MAX_ADAPTER_NAME_LENGTH = 256;MAX_ADAPTER_DESCRIPTION_LENGTH = 128;MAX_ADAPTER_ADDRESS_LENGTH = 8;typeTIPAddressString = a 阅读全文

posted @ 2012-06-06 09:26 ╰★张志峰★╮ 阅读(4062) 评论(1) 推荐(0) 编辑

摘要:DELPHI获取网卡MAC地址1、通过IP取MAC地址usesWinSock;Function sendarp(ipaddr:ulong;temp:dword;ulmacaddr:pointer;ulmacaddrleng:pointer) : DWord; StdCall; External 'Iphlpapi.dll' Name 'SendARP';procedure TForm1.Button1Click(Sender: TObject);varmyip:ulong;mymac:array[0..5] of byte;mymaclength:ulong;r 阅读全文

posted @ 2012-06-06 09:21 ╰★张志峰★╮ 阅读(8428) 评论(0) 推荐(0) 编辑

摘要://获取网卡MAC地址function GetMacAddress: string;var lib:Cardinal; Func: function(GUID:PGUID):Longint; stdcall; GUID1,GUID2:TGUID;begin Result := ''; Lib := Loadlibrary('rpcrt4.dll'); if Lib <> 0 then begin if Win32Platform <> VER_PLATFORM_WIN32_NT then @Func := GetProcAddress(l 阅读全文

posted @ 2012-06-06 09:18 ╰★张志峰★╮ 阅读(1074) 评论(0) 推荐(0) 编辑

摘要:var MyCol: TColumnEh;begin with DBGridEh_DWUser do begin Columns.Clear; MyCol := Columns.Add; MyCol.FieldName := 'USER_CODE'; MyCol.Title.Caption := '用户编码'; MyCol.Width := 120; MyCol.ReadOnly := True; //只读 MyCol.Alignment := taCenter; //单元格中的内容对齐状态 MyCol.Layout := tlCenter;//单元格中的内容的 阅读全文

posted @ 2012-01-06 13:31 ╰★张志峰★╮ 阅读(2784) 评论(0) 推荐(0) 编辑

摘要:OptionsEh =dghExtendVertLines 就会有这个效果, 去掉就会没有这个效果 阅读全文

posted @ 2012-01-06 12:18 ╰★张志峰★╮ 阅读(1082) 评论(4) 推荐(0) 编辑

摘要:如果想让DbgridEh显示下拉列表,需要设置下面的属性IndicatorTitle.ShowDropDownSign = TrueIndicatorTitle.TitleButton = True如果需要隔行换色OddRowColor 这个属性的颜色值设置成和背景不相同的颜色就可以了。 阅读全文

posted @ 2011-12-21 16:43 ╰★张志峰★╮ 阅读(1325) 评论(0) 推荐(0) 编辑

摘要:设置Bands属性中的Active := True; 阅读全文

posted @ 2011-12-13 15:08 ╰★张志峰★╮ 阅读(665) 评论(0) 推荐(0) 编辑

摘要:设置Navigation中的AdvanceOnEnter := Ture; 就可以实现回车换格的效果。 阅读全文

posted @ 2011-12-13 15:06 ╰★张志峰★╮ 阅读(794) 评论(0) 推荐(0) 编辑

摘要:如题:我输入的是“使得法国”但是在表格中只显示“法国”,如下图:原因如下在TAdvStringGrid表格中的MouseActions属性中我设置了RangeSelectAndEdit := True;这样好的效果是你可以拖动选中单元格并且实现选中行的效果,但是会出现吃汉字的现象,英文字母没关系。 阅读全文

posted @ 2011-12-13 15:04 ╰★张志峰★╮ 阅读(645) 评论(0) 推荐(0) 编辑

摘要:TAdvStringGrid表格显示下拉列表的时候,总是刷新 并且选择的内容被清空,如下图:后来调整属性,在表格的ContrtolLook属性下的DropDownAlwaysVisible的属性设置为True,并且在表格的HasComboBox的方法中,增加如下代码,解决问题procedure TForm_DWUserManager.advstrngrd_SubDWHasComboBox(Sender: TObject; ACol, ARow: Integer; var HasComboBox: Boolean);var FieldClass: TFieldClass;begin FieldC 阅读全文

posted @ 2011-12-13 10:34 ╰★张志峰★╮ 阅读(3251) 评论(0) 推荐(0) 编辑

摘要:---- 1、拷贝目录 ---- 为了能拷贝目录下带有子目录的情况,先定义一个辅助的拷贝函数,它是递归执行的,直到把目录下的所有文件和子目录都拷贝完。 ---- 1.1拷贝目录的递归辅助函数:DoCopyDir function DoCopyDir(sDirName:String; sToDirName:String):Boolean; var hFindFile:Cardinal; t,tfile:String; sCurDir:String[255]; FindFileData:WIN32_FIND_DATA; begin //先保存当前目录 ... 阅读全文

posted @ 2011-12-05 13:51 ╰★张志峰★╮ 阅读(1495) 评论(0) 推荐(0) 编辑

摘要:---- 2、删除目录 ---- 删除目录与拷贝目录很类似,但为了能删除位于根目录下的一个空目录,需要在辅助函数中设置一个标志变量,即:如果删除的是空目录,则置bEmptyDir为True,这一句已经用深色框表示了。 ---- 2.1删除目录的递归辅助函数:DoRemoveDir function DoRemoveDir(sDirName:String):Boolean; var hFindFile:Cardinal; tfile:String; sCurDir:String; bEmptyDir:Boolean; FindFileData:WIN3... 阅读全文

posted @ 2011-12-05 13:50 ╰★张志峰★╮ 阅读(2152) 评论(0) 推荐(0) 编辑

摘要:---- 3、移动目录 ---- 有了拷贝目录和删除目录的函数,移动目录就变得很简单,只需顺序调用前两个函数即可: function MoveDir(sDirName:String; sToDirName:string):Boolean; begin if CopyDir(sDirName,sToDirName) then if RemoveDir(sDirName) then result:=True else result:=false; end; ///////////////////... 阅读全文

posted @ 2011-12-05 13:49 ╰★张志峰★╮ 阅读(483) 评论(0) 推荐(0) 编辑