标题:Delphi菜鸟问题请教下!
取消只看楼主
爱像深蓝
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-10
 问题点数:0 回复次数:3 
Delphi菜鸟问题请教下!


小弟刚学delphi还是菜菜鸟一个,请各位会的大侠高手们指点一二,不胜感激!
在下声明了两个函数:
function IsAlphabet(c:char):boolean;
function IsWord(s:String):boolean;

IsAlphabet是传入一个字符判断这个字符是否为字母
下面是函数实现
function IsAlphabet(c:char):boolean;
begin
if((c >= 'a' ) and ( c <= 'z')) or (( c >= 'A') and (c <= 'Z')) then
Result:= True
else
Result:= False;
end;


我在别处调用这个IsAlphabet函数时,结果得不到返回值
var
str:string;
i:integer;
begin
str := 'I love U';
i := 1;
while not i <= length(str) do
begin
if not IsAlphabet(str[i]) then
Result:=false;
Inc(i);
end;
Result:=true;
end;
问题就出在我标注的红字这:
IsAlphabet(str[i])
为什么我这里调式时得不到返回值,即true和false都得不到.这是为什么呢?

小弟刚学delphi还是菜菜鸟一个,请各位会的大侠高手们指点一二,不胜感激!

注其实是没有 "\"这个符号的.但是不加就发不上去方括号!

[此贴子已经被作者于2007-8-5 9:49:06编辑过]

搜索更多相关主题的帖子: Delphi 
2007-08-05 09:47
爱像深蓝
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-10
得分:0 
不好意思.写错了.
while not i > length(str) do

不过问题不是在这里.

我写的函数居然进不到返回值.
var
isTrue:boolean;

begin
isTrue:=IsAlphabet('a'):boolean;

end;
这里是我打比方,问题就在于这个isTrue 这个布尔型变量得不到值.不论是false还是true都得不到...
2007-08-07 17:45
爱像深蓝
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-10
得分:0 

这是我写的单元文件,里面有两个方法,isAlphabet()判断是字符是否为字母返回true或false
isWord从逻辑上判一个字符串是否为字母例 str1这就不是.str是.所以只是逻辑上
下面是完整的源码.于我打红字的地方有问题!
unit StrFunc;

interface
uses SysUtils,classes;

function IsAlphabet(ch:char):boolean;
function IsWord(str:String):boolean;

implementation
function IsAlphabet(ch:char):boolean;
var
foo:boolean;
begin
foo:= false;
if((ch >= 'a') and (ch <= 'z')) or ((ch >='A') and (ch <='Z')) then
begin
foo:=true;//如果此字符ASCII值在a-z或A-Z之间说明此字符是字母
end;
result:=foo;
//在这个方法中通过调试过程中的变量监视功能明显可看到result得到不同的值,即是a就true是1就false
end;
function IsWord(str:String):boolean;

var
i:Integer; //变量i只是增量
StrTemp:String; //接受trim之后的变量
foo:boolean;//结果

begin
strTemp := trim(str);
i := 1;
foo:=true;

while i <= Length(strTemp) do
begin
if not IsAlphabet(strTemp[i]) then //这里不论怎么弄得到的值都貌似true即是字母.哪怕123也可以..汗.
begin
foo:= false; //如果有一个字符不是字符那么这个单词就一定不是单词
end;

Inc(i); //注这里的INC函数相当于我们C/C++中的i++;
//即Index++ 在delphi里可表示为Inc(Index)
end;

result := true; //说句实话个人非常不喜欢delphi这种语法大小写的result都可以.
//函数的返回值有多种方法result可以函数名也可以.巨汗ing.

end;

end.





这是完整的源代码.问题就出在我标红字的地方.

[此贴子已经被作者于2007-8-10 12:06:31编辑过]

2007-08-10 12:00
爱像深蓝
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-7-10
得分:0 

汗...原来如此...
在下实在是太粗心了..居然看到最后这里.其实这个程序是别人教在下改的.
本来我对delphi一点都不明白.
所以我就在源码上基础上改,把变量名,代码书写习惯加上自己的注解.结果有的地方没有改过来,导致了以上的错误.

在下非常感谢楼上仁兄的金玉之言,要不是我现在还郁闷呢


源码已经修改,也同时感谢楼上几位达人的热心...

unit StrFunc;

interface
uses SysUtils,classes;

function IsAlphabet(ch:char):boolean;
function IsWord(str:String):boolean;

implementation
function IsAlphabet(ch:char):boolean;
var
foo:boolean;
begin
foo:= false;
if((ch >= 'a') and (ch <= 'z')) or ((ch >='A') and (ch <='Z')) then
begin
foo:=true;//如果此字符ASCII值在a-z或A-Z之间说明此字符是字母
end;
result:=foo;
end;
function IsWord(str:String):boolean;

var
i:Integer; //变量i只是增量
StrTemp:String; //接受trim之后的变量
foo:boolean;//结果

begin
strTemp := trim(str);
i := 1;
foo:=true;

while i <= Length(strTemp) do
begin
if not IsAlphabet(strTemp[i]) then
begin
foo:= false; //如果有一个字符不是字符那么这个单词就一定不是单词
end;

Inc(i); //注这里的INC函数相当于我们C/C++中的i++;
//即i++ 在delphi里可表示为Inc(i)
end;

result := foo; //说句实话个人非常不喜欢delphi这种语法大小写的result都可以.
//函数的返回值有多种方法result可以函数名也可以.巨汗ing.把true值改为变量名取foo的值

end;

end.

[此贴子已经被作者于2007-8-10 16:24:33编辑过]

2007-08-10 16:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-160408-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052545 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved