2013-07-17 52 views
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並把它放在 。我能做什麼?如果你需要在這裏你可以看到節目的圖象:

enter image description here

+2

僅供將來參考:您的for循環沒有意義。你試圖從'1 downto length(Edit1.Text)'運行它,這意味着除非Edit1.Text長度爲零或負數(當然這是不可能的),否則循環永遠不會運行。它應該是'for i:= Length(Edit1.Text)downto 1'。 –

回答

7

你可以嘗試使用包含在StrUtils功能ReverseString();。所以,首先在您的使用條款中添加StrUtils。然後把這個代碼,而不是對於循環:

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

這是你的一樣,但這種方式更容易。另外,如果你想要的字符串的長度只寫這樣的代碼:

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

當然,不是your_edit,輸入編輯的正確名稱。

+0

如果我還有單獨的單詞,這項工作是否會完成?就像我輸入「An Apple」一樣,它會返回「elppA nA」對不對? :) –

+2

是的,它適用於任何類型的字符串:) –

+0

@EmmaRossignoli字符串內部沒有任何單詞魔術。它只是一堆字符,當反轉字符串的所有字符時,它們將以相反的順序作爲簡單和基本的函數 –

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); 

倒車當你只需要一個字母時,整個字符串是一個矯枉過正的問題,就像帶回家的蘋果只吃一個。

+0

^或簡單地使用ReverseString();因爲DK64建議:) –

+0

@Emma - 你沒有回答我在這個答案中提出的問題。也許這是我的英語,也許是你的問題,但你的問題本身就是矛盾的。當然,你可以通過設置燃燒的母雞來煮雞蛋,但即使簡單,它也有點矯枉過正。所以問題依然存在,你實際上想要什麼 - 字母或字符串,對你來說什麼是字,等等。 –