OnKeyPress 時如何把字元加到另一字串? |
尚未結案
|
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
各位好,
這個問題應該是很簡單的,但是我怎麼查 Delphi 的 Help 或者看自己手頭
上的 Delphi 書,都找不出答案,真是超級奇怪。 我打算用 TStringlist 當做文字儲存的地方,把鍵盤按鍵的輸入
一個字元一個字元地存入 TStringlist 裡面,然後以 Canvas.TextOut 把
TStringlist 的字串一列一列地印在 Form 的 Client area 上面。 TStringlist 的函式是針對字串,不針對字串中的字元,所以全部無用。
唯一可行的方法是先以索引找出某字串,再針對該字串中的字元來動手腳,
理論上:
stringlist[index] // 指定stringlist中某個字串
Length(stringlist[index]) // 找出該字串的長度,可以補上一個字元。 過程像這樣:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
stringlist[index][Length(stringlist[index])] := Key;
end; 這樣就出錯了,TStringList 好像不是 string 陣列,當中的字串跟用
string 宣告的字串不一樣。
然後我想改用另一個由 string 宣告的字串 s,把 OnkeyPress 送來的字元
塞進 s 裡面,再把 s 塞進 stringlist 裡面,而這又產生另一問題:
s[0] := Key; // Delphi : Error ! Index 0 is not accessible.
Delphi 居然傳回s[0] 無法存取的錯誤,改用:
s[1] := Key; // Delphi 沒說有錯誤。
s[10] := Key; // Delphi 沒說有錯誤。
我真的被搞到一頭霧水了,字串的第一個索引值不是 0 嗎?
還有一個怪現象:
s : string;
...
s := stringlist[Index]; // Delphi : 這樣也不行!
stringlist[Index] := 'Hello world'; // 這樣就可以。 回到原來問題,如何把 OnKeyPress 接收到的字元塞進 TStringList 或者
以string 宣告的變數當中? 謝謝謝謝大家。
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |