对于编辑中的反向词的循环

时间:2013-07-17 10:19:01

标签: delphi lazarus

这是我目前正在使用的代码:

procedure TForm1.Button1Click(Sender: TObject);
var a:string;
    i:smallint;
begin
  a:=Edit1.text;
  for i:= 1 downto length(Edit1.Text) do
   begin
    Edit2.Text:= {last letter};
   end; 

我希望程序在Edit1.Text中取出单词的最后一个字母并将其放在Edit2.Text上。我能做什么?如果您需要,可以看到该程序的图片:

enter image description here

2 个答案:

答案 0 :(得分:7)

您可以尝试使用StrUtils中包含的函数ReverseString();。因此,首先在uses子句中添加StrUtils。然后把这个代码代替for循环代码:

begin
  a:=Edit1.text;
  Edit2.Text:=ReverseString(a);
end;

它与你的相同,但这种方式更容易。另外,如果你想要字符串的长度,只需写下这段代码:

Edit3.Text:=IntToStr(length(your_edit.text));

当然,请输入正确的编辑名称,而不是your_edit

答案 1 :(得分:0)

  

该程序采用Edit1.Text

中单词的最后一个字母

那你的意思是说有几个字吗?那么你想要哪个词,或者你想逐个迭代所有的词?

或者你的意思是“整个字符串的最后一个字母”,无论是一个字还是多个字?

你真的需要所有字母翻转或只需要最后一个吗?

实际上,如果你只需要单个字母,那么效率最高的代码就是

if SourceString > '' then
   DestString := SourceString[ Length( SourceString )]
else
   ... the source is empty... do something like showing error

或者使用SysUtils中包含内置空字符串的函数:http://www.freepascal.org/docs-html/rtl/sysutils/rightstr.html

DestString := RightStr(SourceString, 1);

当你只需要一个字母的时候扭转整个字符串是一种矫枉过正的感觉,比如将一辆苹果卡车带回家只吃其中一个。