请用Delphi编写一个小程序。全部分数悬赏
请用Delphi编写一个小程序,从一个文本文件中把所有数字累加起来,然后显示出结果。文本文件内容如下所示:华伦巴菲特-世界首富的选股法则:股东权益报酬率(1季及2年平均)...
请用Delphi编写一个小程序,
从一个文本文件中把所有数字累加起来,然后显示出结果。文本文件内容如下所示:
华伦巴菲特-世界首富的选股法则:
股东权益报酬率(1季及2年平均)均大于3.75%
现金流量成长率(1季及2年平均)均大于5%
价格/净值比小于2
毛利率(1季及2年平均)均大于15%
本益比小于20
结果=1+2+3+75+1+2+5+2+1+2+15+20 展开
从一个文本文件中把所有数字累加起来,然后显示出结果。文本文件内容如下所示:
华伦巴菲特-世界首富的选股法则:
股东权益报酬率(1季及2年平均)均大于3.75%
现金流量成长率(1季及2年平均)均大于5%
价格/净值比小于2
毛利率(1季及2年平均)均大于15%
本益比小于20
结果=1+2+3+75+1+2+5+2+1+2+15+20 展开
展开全部
//加个opendialog,代码不难,应该看得明白
var
p :PChar;
i,n :Integer;
list :TStringList;
str :string;
begin
if opendialog1.execute then
begin
list := TStringList.Create;
list.LoadFromFile(opendialog1.FileName);
str := list.Text;
p := PChar(str);
while p^ <> #0 do
begin
case p^ of
'0'..'9': ;
else p^ := #32;
end;
Inc(p);
end;
list.clear;
list.Delimiter := #32;
list.DelimitedText := str;
n := 0;
str := '';
for i := 0 to list.Count - 1 do
begin
n := n+strtoint(list.Strings[i]);
if str = '' then
str := list.Strings[i]
else
str := str+'+'+list.Strings[i];
end;
list.Free;
showmessage(inttostr(n)+'='+str);
end;
end;
var
p :PChar;
i,n :Integer;
list :TStringList;
str :string;
begin
if opendialog1.execute then
begin
list := TStringList.Create;
list.LoadFromFile(opendialog1.FileName);
str := list.Text;
p := PChar(str);
while p^ <> #0 do
begin
case p^ of
'0'..'9': ;
else p^ := #32;
end;
Inc(p);
end;
list.clear;
list.Delimiter := #32;
list.DelimitedText := str;
n := 0;
str := '';
for i := 0 to list.Count - 1 do
begin
n := n+strtoint(list.Strings[i]);
if str = '' then
str := list.Strings[i]
else
str := str+'+'+list.Strings[i];
end;
list.Free;
showmessage(inttostr(n)+'='+str);
end;
end;
展开全部
你的问题其实很简单,就是判断取出的字串是否是数字便可。
设计原理:Delphi里String型数据,把你的文本整个付给一个String,然后String型自带了SubString(int index, int count)函数,使用这个函数就可以从这段文本的某个位,取几位字串,然后看看它是否是数字,是否处于0到999999之间。
需要用到的:
1、取文本的某段,使用SubString,String型自带。
2、看它是否是数字使用StrToInt函数,并使用try语句。
3、看它是否处于0到999999之间,用if判断一下便可。
至于具体怎么写,你自个看着办吧,如果都说到这份上,你还是不会,那你更需要自个写,否则,别人写了你也看不懂,只能说你想抄作业,这样是学不到东西的。
PS:真不知 zhuktc 说Delphi消失的消息是哪儿来的。不懂就别在这儿现宝!Delphi在当前依旧是快速开发最主要的编程工具之一,Delphi 2009没多久前才出版。虽然Borland公司近年运作不好,但不影响其编程工具依旧为最主要的开发工具。delphi在未来的10年中,应该不会被淘汰。
设计原理:Delphi里String型数据,把你的文本整个付给一个String,然后String型自带了SubString(int index, int count)函数,使用这个函数就可以从这段文本的某个位,取几位字串,然后看看它是否是数字,是否处于0到999999之间。
需要用到的:
1、取文本的某段,使用SubString,String型自带。
2、看它是否是数字使用StrToInt函数,并使用try语句。
3、看它是否处于0到999999之间,用if判断一下便可。
至于具体怎么写,你自个看着办吧,如果都说到这份上,你还是不会,那你更需要自个写,否则,别人写了你也看不懂,只能说你想抄作业,这样是学不到东西的。
PS:真不知 zhuktc 说Delphi消失的消息是哪儿来的。不懂就别在这儿现宝!Delphi在当前依旧是快速开发最主要的编程工具之一,Delphi 2009没多久前才出版。虽然Borland公司近年运作不好,但不影响其编程工具依旧为最主要的开发工具。delphi在未来的10年中,应该不会被淘汰。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
procedure TForm1.Button1Click(Sender: TObject);
var
MyTextFile: TextFile; //¶¨Òå±äÁ¿MyTextFileΪÎı¾ÎļþÀàÐÍ
tmpContext: WideString; //ÓÃÀ´ÁÙʱ±£´æÒ»ÐÐÎı¾ÄÚÈÝ
i : Integer;
tmps: string;
s : string;
tmpResult : string; //ÁÙʱ±£´æÖмäÖµ
begin
tmpResult :='';
if FileExists('d:/test.txt') then //½øÐÐÎļþÊÇ·ñ´æÔÚµÄÅжϡ£
begin
AssignFile(MyTextFile,'d:/test.txt');//½«Îļþ±äÁ¿ÓëÍⲿÎļþÁªÏµ¡£Ï൱ÓÚΪÍⲿÎļþÕÒÁ˸ö¡°ÌæÉí¡±
Reset(MyTextFile);//È·±£¶ÁȡλÖÃÔÚÎļþ×ʼ
While not Eof(MyTextFile) do
begin
tmps:='';
ReadLn(MyTextFile,tmpContext);//¶ÁÈ¡Ò»ÐÐÎı¾ÄÚÈÝ
For i:=1 to length(tmpContext) do
begin
s:=tmpContext[i];
if (ord(s[1])<48) or (ord(s[1])>57) then //²»ÊÇ¡®0¡¯µ½¡®9¡¯Ö®¼äµÄÊý×Ö
begin
if tmps <> '' then
begin
if tmpResult<>'' then
tmpResult:=tmpResult+'+'+tmps
else
tmpResult:=tmps;
end;
tmps:='';
continue;
end
else
begin
if (ord(s[1])>=48) and (ord(s[1])<=57) then//ÊÇ¡®0¡¯µ½¡®9¡¯Ö®¼äµÄÊý×Ö
tmps:=tmps+s;
end;
end;
if tmps <> '' then
begin
if tmpResult<>'' then
tmpResult:=tmpResult+'+'+tmps
else
tmpResult:=tmps;
end;
end;
closefile(MyTextFile);
ShowMessage(tmpResult);
end;
end;
完全符合你的要求,
var
MyTextFile: TextFile; //¶¨Òå±äÁ¿MyTextFileΪÎı¾ÎļþÀàÐÍ
tmpContext: WideString; //ÓÃÀ´ÁÙʱ±£´æÒ»ÐÐÎı¾ÄÚÈÝ
i : Integer;
tmps: string;
s : string;
tmpResult : string; //ÁÙʱ±£´æÖмäÖµ
begin
tmpResult :='';
if FileExists('d:/test.txt') then //½øÐÐÎļþÊÇ·ñ´æÔÚµÄÅжϡ£
begin
AssignFile(MyTextFile,'d:/test.txt');//½«Îļþ±äÁ¿ÓëÍⲿÎļþÁªÏµ¡£Ï൱ÓÚΪÍⲿÎļþÕÒÁ˸ö¡°ÌæÉí¡±
Reset(MyTextFile);//È·±£¶ÁȡλÖÃÔÚÎļþ×ʼ
While not Eof(MyTextFile) do
begin
tmps:='';
ReadLn(MyTextFile,tmpContext);//¶ÁÈ¡Ò»ÐÐÎı¾ÄÚÈÝ
For i:=1 to length(tmpContext) do
begin
s:=tmpContext[i];
if (ord(s[1])<48) or (ord(s[1])>57) then //²»ÊÇ¡®0¡¯µ½¡®9¡¯Ö®¼äµÄÊý×Ö
begin
if tmps <> '' then
begin
if tmpResult<>'' then
tmpResult:=tmpResult+'+'+tmps
else
tmpResult:=tmps;
end;
tmps:='';
continue;
end
else
begin
if (ord(s[1])>=48) and (ord(s[1])<=57) then//ÊÇ¡®0¡¯µ½¡®9¡¯Ö®¼äµÄÊý×Ö
tmps:=tmps+s;
end;
end;
if tmps <> '' then
begin
if tmpResult<>'' then
tmpResult:=tmpResult+'+'+tmps
else
tmpResult:=tmps;
end;
end;
closefile(MyTextFile);
ShowMessage(tmpResult);
end;
end;
完全符合你的要求,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Delphi已经消失了!你还学习干嘛!是兴趣吗?还是工作需求?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询