在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
2016/7/4 0:41:58 倒叙
2016/7/3 22:24:27 for in do
for betStart:=1 to 7 do ShowMessage(IntToStr(betStart));
2016/7/3 19:38:17 Howto convert a float or double to string in delphi
Symptom: 2.You need to convert a float or double to a string in pascal 3. 4.Cause: 5.none 6. 7.Solution: 8.You can use the FunctionFloatToStr wich takes a float parameter.You can use the DoubleToStrfor converting a double. 9. 10.Here a little example: 11. 12.procedure TForm1.Button1Click(Sender:TObject); 13.var s : string; 14.var mydoubleD : double; 15.begin 16. mydoubleD :=3.14152341234234; 17. s :=FloatToStr( mydoubleD ); 18. 19.//you could as well use s in the ShowMessage:-) 20.ShowMessage('Your Double is: '+FloatToStr(mydoubleD)); 21.end; 22. 23. 24.Disclaimer: 25.The information provided in this document is intended for your information only.Lubby makes no claims to the validity of this information.Use of this information is at own risk!
2016/7/2 18:42:40 怎么使用 HMAC Sha256 算法
2016/7/2 13:14:51 判断是否为数字,是则返回数字,否则返回0
比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strtointdef这个函数. 写法如下: 假设edit1.text:='1000'; 则strtointdef(edit1.text,0)返回值为1000. 如果edit1.text:='fdafds',则返回值为0. (如果你用strtoint(edit1.text)当edit1.text:='fdads'时会报错的)我们可以用strtointdef这个函数来判断一个文本框输入的是否是整数.
2016/7/2 12:25:50 提取字符串里面的数字
{ List Numberic } type TCharSet = set of Char; function StripNonConforming(const S: string;const ValidChars: TCharSet): string; var DestI: Integer; SourceI: Integer; begin SetLength(Result, Length(S)); DestI := 0; for SourceI := 1 to Length(S) do if S[SourceI] in ValidChars then begin Inc(DestI); Result[DestI] := S[SourceI] end; SetLength(Result, DestI) end; function StripNonNumeric(const S: string): string; begin Result := StripNonConforming(S, ['0'..'9']) end;
2016/7/2 1:28:25 表格自动列宽
function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 15): Boolean; var I: Integer; begin Result := False; if not Assigned(mDBGrid) then Exit; if not Assigned(mDBGrid.DataSource) then Exit; if not Assigned(mDBGrid.DataSource.DataSet) then Exit; if not mDBGrid.DataSource.DataSet.Active then Exit; for I := 0 to mDBGrid.Columns.Count - 1 do begin if not mDBGrid.Columns[I].Visible then Continue; DBGridRecordSize(mdbgrid.Columns[i]); if Assigned(mDBGrid.Columns[I].Field) then mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag, mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset else mDBGrid.Columns[I].Width := mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset; mDBGrid.Refresh; // Application.ProcessMessages; end; Result := True; end; { DBGridAutoSize }
2016/7/1 20:53:36 询问是否退出:
if Application.MessageBox('您好,确定要退出本程序吗', '提示', MB_OKCANCEL) = IDOK then Application.Terminate;
2016/7/1 20:44:37 MessageBox 用法
例子:messagebox(0,'没有选择播放类型','错误',MB_ICONEXCLAMATION ); --Application.MessageBox('MessageBox','警告',MB_ICONWARNING+MB_YesNo); --MessageBox(Form1.Handle,'MessageBox','提示',MB_ICONINFORMATION+MB_OkCancel); --MessageBox(Form1.Handle,'MessageBox','提示‘,MB_ICONINFORMATION+MB_OkCancel+MB_DEFBUTTON2); -- if MessageBox(Form1.Handle,'MessageBox','提示',MB_ICONINFORMATION+MB_OkCancel)= idOk then begin ShowMessage('Ok'); end;
2016/7/1 15:12:56 数字转字符串
A:=IntToStr(123)
2016/7/1 12:26:00 Delphi正则表达式使用方法(TPerlRegEx)
目前主流的delphi下的正则表达式,应该是 PerlRegEx 。 官方网站: http://www.regular-expressions.info/delphi.html 直接下载: http://www.regular-expressions.info/download/TPerlRegEx.zip 安装方法(我使用的delphi版本是 delphi2007): 1、先把解压的 TPerlRegEx 文件夹放在 Delphi 的根目录下的 Imports 目录中。 2、目前最新 For Win32 的版本是可以在 Delphi7,Delphi 2006,Delphi 2007,Delphi 2009 下使用。 我用的是2007,于是就打开了PerlRegExD2007.dpk ,在 Project Manager 窗口中的 PerlRegExD2007.bpl 上点击右键,执行 Install。这时在 Tool Palette 的列表中已经有了 TPerlRegEx,在 JGsoft 组。 3、Tools -> Options -> Environment Options -> Delphi Options -> Library-Win32 -> Library path -> 添加路径:$(BDS)\Imports\TPerlRegEx (注:就是刚才放置的路径)。 4、打开delphi根目录下 Imports\TPerlRegEx\pcre ,把 pcre3.dll 文件复制到 C:\WINDOWS\system32 文件夹下,这个文件夹里是windows系统存放 dll 文件的大本营。如果不复制pcre3.dll,在应用 TPerlRegEx 正则的时候,系统提示出错。 5、用delphi打开 Imports\TPerlRegEx 目录下的 pcre.pas 文件,找到 //{$DEFINE PCRE_STATICLINK} ,把之前的注释 // 删除;找到 {$DEFINE PCRE_LINKDLL} ,把它注释掉,即改为 //{$DEFINE PCRE_LINKDLL} 。注意:这点非常重要,如果不这样改的话,在软件开发完成后,分发到其他电脑上的时候,软件就会提示“缺少pcre3.dll错误”。这样修改的原因,是把正则直接封包到 exe 文件里,而不需要链接 pcre3.dll 了;封包进 exe,付出的代价是软件增大了 100KB 左右的大小,当然比起必须携带 pcre3.dll来说,这是有意义的付出。 6、可以使用了! 直接 uses PerlRegEx 或从 Tool Palette 添加都可以。 TPerlRegEx 安装设置完成后,就可以舒心地使用了,一些简单的使用方法如下: //查找是否存在 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'CodeGear Delphi 2007 for Win32'; reg.RegEx := '\d'; if reg.Match then ShowMessage('找到了') else ShowMessage('没找到'); FreeAndNil(reg); end; //替换一般字符串 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := '我爱DELPHI, 但Delphi不爱我!'; reg.RegEx := 'Delphi'; reg.Replacement := '◆'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: 我爱DELPHI, 但◆不爱我! FreeAndNil(reg); end; //分别显示找到的每一个和总数 var reg: TPerlRegEx; num: Integer; //用 num 来计数 begin reg := TPerlRegEx.Create(nil); reg.Subject := 'CodeGear Delphi 2007 for Win32'; reg.RegEx := '\d'; num := 0; while reg.MatchAgain do //MatchAgain 是下一个 begin ShowMessage(reg.MatchedExpression); //将分别显示: 2 0 0 7 3 2 Inc(num); end; ShowMessage(IntToStr(num)); //6 FreeAndNil(reg); end; //目标字符串的位置与长度 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'CodeGear Delphi 2007 for Win32'; reg.RegEx := 'Delphi'; while reg.MatchAgain do //很明显: 本例只能找到一个结果 begin ShowMessage(reg.MatchedExpression); //找到的字符串: Delphi ShowMessage(IntToStr(reg.MatchedExpressionOffset)); //它所在的位置: 10 ShowMessage(IntToStr(reg.MatchedExpressionLength)); //它的长度: 6 end; FreeAndNil(reg); end; // Matchedexpression_r 与Subexpression_rs[0] var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'CodeGear Delphi 2007'; reg.RegEx := 'Delphi'; while reg.MatchAgain do begin ShowMessage(reg.Matchedexpression_r); //Delphi; 这是匹配到的内容 ShowMessage(reg.Subexpression_rs[0]); //Delphi; 也可以这样显示匹配到的内容 end; { Subexpression_rs 是一个数组: Subexpression_rs[1] 储存第 1 个表达式匹配的内容; Subexpression_rs[2] 储存第 2 个表达式匹配的内容; Subexpression_rs[n] 储存第 n 个表达式匹配的内容; Subexpression_rs[0] 储存整个表达式匹配的内容; Matchedexpression_r 表示的不过是 Subexpression_rs[0]. } FreeAndNil(reg); end; //提取子表达式匹配到的内容 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'abc A1111 BB222 CCC33 DDDD4'; reg.RegEx :='\b([A-D]+)([1-4]+)\b'; //这个表达式有两个子表达式构成 while reg.MatchAgain do begin ShowMessage(reg.Subexpression_rs[0]); //将分别显示: A1111 BB222 CCC33DDDD4 ShowMessage(reg.Subexpression_rs[1]); //将分别显示: A BB CCC DDDD ShowMessage(reg.Subexpression_rs[2]); //将分别显示: 1111 222 33 4 {另外: reg.Subexpression_rCount 是子表达式的个数; reg.Subexpression_rLengths[n] 是第 n 个表达式返回的字符串的长度; reg.Subexpression_rOffsets[n] 是第 n 个表达式返回的字符串在源字符串中的位置 } end; FreeAndNil(reg); end; //子表达式不能超过 MAX_SUBexpression_rS = 99 个, MAX_SUBexpression_rS 是TPerlRegEx 的内置常数. //设定搜索范围: Start、Stop var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'ababab'; reg.RegEx := 'ab'; reg.Replacement := '◆'; reg.Start := 1; reg.Stop := 2; while reg.MatchAgain do begin reg.Replace; end; ShowMessage(reg.Subject); //返回: ◆abab reg.Subject := 'ababab'; reg.Start := 3; reg.Stop := 4; while reg.MatchAgain do begin reg.Replace; end; ShowMessage(reg.Subject); //返回: ab◆ab reg.Subject := 'ababab'; reg.Start := 5; reg.Stop := 6; while reg.MatchAgain do begin reg.Replace; end; ShowMessage(reg.Subject); //返回: abab◆ FreeAndNil(reg); end; // Replace var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.RegEx := 'ab'; reg.Replacement := '◆'; reg.Subject := 'ababab'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: ◆◆◆ reg.Subject := 'ababab'; //下面四行程序, 相当于 reg.ReplaceAll; while reg.MatchAgain do begin reg.Replace; end; ShowMessage(reg.Subject); //返回: ◆◆◆ FreeAndNil(reg); end; { ReplaceAll 函数返回的是 Boolean; Replace 函数返回的是 Replacement 的值, 当然是不能赋值的, 它仅仅是返回值. } // Compile、Study var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.RegEx := 'ab'; reg.Options := [preCaseLess]; reg.Compile; {编译表达式} reg.Study; {Study 方法会检查是否编译, 如果没有编译则执行 Compile} reg.Replacement := '◆'; reg.Subject := 'abAbaB'; reg.ReplaceAll; ShowMessage(reg.Subject); {返回: ◆◆◆} FreeAndNil(reg); end; { 编译表达式, 会加快执行速度、降低启动速度; 如果表达式比较复杂而又多次执行, 应该先编译; 编译内容包括表达式选项. } // EscapeRegExChars 函数可以自动为特殊字符加转义符号 \ var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); reg.Subject := 'C++Builer'; reg.RegEx :=reg.EscapeRegExChars('C+') + '{2}'; {相当于 'C\+{2}'} reg.Replacement := '◆'; reg.ReplaceAll; ShowMessage(reg.Subject); {返回: ◆Builer} FreeAndNil(reg); end; //字符串分割: Split var reg: TPerlRegEx; List: TStrings; begin List := TStringList.Create; reg := TPerlRegEx.Create(nil); reg.Subject := 'aaa,bbb,ccc,ddd'; reg.RegEx := ',';{这里可是运行相当复杂的分割符啊} reg.Split(List,MaxInt); {第一个参数读入的是 Subject; 第二个参数是分成多少份} { 输入一个最大整数, 表示能分多少就分多少} ShowMessage(List.Text); {返回: aaa bbb ccc ddd } FreeAndNil(reg); List.Free; end;
2016/7/1 2:18:30 if command
Example code : Illustrate the different flavours of the if statement begin // Illustrate a simple if statement that executes true If True then ShowMessage('True!'); // Illustrate the same, but with multiple actions If 1 = 1 then begin ShowMessage('We now have'); ShowMessage('multiple lines'); end; // Illustrate a simple if statement that fails If 1 = 2 then ShowMessage('1 = 2'); // Illustrate an if then else statement // Note the lack of a ';' after the 'then' clause If False then ShowMessage('True') else ShowMessage('False'); // Nested if statements - Delphi sensibly manages associations If true then If false then ShowMessage('Inner then satisfied') else ShowMessage('Inner else satisfied') else ShowMessage('Outer else satisfied') end; Show full unit code True! We now have multiple lines False Inner else satisfied
1. 如何让窗体加载图片:
2. delphi中用Memo控件,F9执行时会显示“memo1”,如何清除
3. 您好!向您请教一个问题:我在delphi 7中运行一个程序,提示:file not found 'EditNew.dcu'
全部评论
专题导读
热门推荐
热门话题
阅读排行榜
|
请发表评论