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.上等待答案要快,你可以从中学习。学会自助。并打开项目选项中的所有检查:溢出、范围等。