delphi实现字符串中数字的判断及相应数字累加
最近面试了一家企业,下面有一道从来没有想过的问题,当时有思路,不过写不出来.回来后,调试了一下,发现还是有难度的,写上来看大家是否还有更优化的写法,欢迎讨论:
下面实现将字符串"10ad200d3" 中的数字合计,10+200+3=213
var s1:string;
var i:integer;
var n1:integer;
var tem1: string;
var tem2:integer;
s1:='10ad200d3'; // 要处理的字符串
tem1:=''; //用来存放得到的数字型字符
tem2:=0; //用来存放合计数
n1:=1; //用来存放统计到位数 ,即现时判断到哪一位置了
for i:=1 to length(s1) do
begin
//当遇到字符时
if not (s1[i] in ['0'..'9','.']) then //判断字符串中某个字符是否是数字
begin
if i<>1 then //当第一个就是字符时,对于本例是不用作任何处理
begin
if tem1<>'' then //将这个字符前面 数字相加
begin
tem2:=tem2+strtoint(tem1);
tem1:='';
end;
end;
n1:=i+1; //位置向前推一位
end;
if (s1[i] in ['0'..'9','.'])then
begin
tem1:=tem1+copy(s1,n1,1); //这种处理主要是为如果连续出现数字时
n1:=i+1;
&nb
相关文档:
帮助页在http://delphi.about.com/cs/adptips2003/a/bltip0203_2.htm
自己在实现的过程中的具体过程如下:
function InstallInf(const PathName: string; hParent: HWND): Boolean;
var
instance: HINST;
begin
instance := ShellExecute(hParent,
PChar('open ......
procedure TForm2.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Screen.Cursor := -2;
end;
const
crDefault = TCursor(0);
crNone = TCursor(-1);
crArrow = TCursor(-2);
&n ......
Delphi U盘插入拨出检测:
1、新建工程;
2、在form1上放一个Label;
3、定义一个私有过程
procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
完整代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics ......
相对用第三方控件,CDO发送邮件还是很简洁方便的
注:CDONTS为CDO的子集,仅支持WinNT/Win2K,WinXP以上请用CDO;
单元引用ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
VCDOMessage:oleVariant;
begin
vCDOMessage:=CreateOleObject('CDO.Message');
vcdomessage.from:='MR.F'+'< ......