Arrays 有谁能帮我处理Delphi7中upcase字符和循环的数组吗?
这是我的密码:Arrays 有谁能帮我处理Delphi7中upcase字符和循环的数组吗?,arrays,string,delphi,upcase,Arrays,String,Delphi,Upcase,这是我的密码: var aChar,temp : char ; test : string ; k : integer ; begin K := 1 ; test := edit1.Text ; for k := 1 to 10 do temp := test[k] ; aChar := upcase(Temp) ; richEdit1.Lines.Add(aChar); richEdit1.Lines.Add(#13) ; end; 出于某种原因,它返回随机值,如#和T,但我已经初始化了它们
var
aChar,temp : char ;
test : string ;
k : integer ;
begin
K := 1 ;
test := edit1.Text ;
for k := 1 to 10 do
temp := test[k] ;
aChar := upcase(Temp) ;
richEdit1.Lines.Add(aChar);
richEdit1.Lines.Add(#13) ;
end;
出于某种原因,它返回随机值,如#和T,但我已经初始化了它们?任何人都能找到答案,请在我明天写这篇文章时告诉我。正如Jerry已经说过的,你的循环是错误的:
var
Len: Integer;
...
Test := Edit1.Text;
Len := Length(Test);
if Len > 10 then
Len := 10;
for K := 1 to Len do
begin // !!!
Temp := Test[K] ;
AChar := UpCase(Temp) ;
RichEdit1.Lines.Add(AChar);
RichEdit1.Lines.Add(#13);
end; // !!!
end;
您可能会发现是否使用了调试器(在Delphi中这很容易)和/或是否正确格式化了代码(IDE也可以为您这样做)
正确的格式是一个很好的工具,可以找到一些看起来奇怪或格式不符合预期的东西。这些通常是错误。进行一些调试。新手程序员最容易被忽视的一项技能。在正确格式化代码后,问题就清楚了。在
for
语句中没有任何开始/结束块,因此您只需覆盖每个循环的temp
值,直到最后一次迭代时才使用它,并且只得到第10个字符,而不是所有字符。至少这是问题的一部分。另外,您的edit1
控件的内容是什么?是否保证始终至少有10个字符?不,并非始终保证,我将快速查看并修复开始和结束问题当格式隐藏问题时,@Jerry,请不要更改格式。这基本上让问题消失了。@Rob我在格式化之后很久才看到这一点。就像我说的,“之后”格式化…完美的代码正在工作,非常感谢。我可能整晚都在问一些问题,因为我落后了,并试图为明天的考试重新安排作业。为什么不自己做作业呢?这对你不是更好吗?为什么不投资一些调试技巧呢?@David是对的。这不是一个家庭作业支持网站。如果你喜欢,请投票和/或接受我的答案。@delphi247:调试通常比在S.O.上等待答案要快,你可以从中学习。学会自助。并打开项目选项中的所有检查:溢出、范围等。