2

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

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. 我能做什么?如果你需要在这里你可以看到程序的图片:

在此处输入图像描述

4

2 回答 2

7

您可以尝试使用ReverseString();StrUtils 中包含的函数。因此,首先添加StrUtils您的使用条款。然后把这个代码而不是那个 for 循环:

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

它和你的一样,但这种方式更容易。此外,如果您想要字符串的长度,只需编写以下代码:

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

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

于 2013-07-17T10:25:48.360 回答
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);

当您只需要一个字母时,将整个字符串反转是一种矫枉过正的做法,就像把一卡车苹果带回家只吃其中一个一样。

于 2013-07-17T11:25:53.027 回答