全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1196
推到 Plurk!
推到 Facebook!

OnKeyPress 時如何把字元加到另一字串?

尚未結案
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-12 21:08:09 IP:210.201.xxx.xxx 未訂閱
各位好, 這個問題應該是很簡單的,但是我怎麼查 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-13 09:11:16 IP:61.218.xxx.xxx 未訂閱
cancer,不知你有沒有試過以下的方法:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  StringList.strings[index]:=StringList.strings[index] Key;
end;    
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-13 23:50:59 IP:210.201.xxx.xxx 未訂閱
Change 大大您好, 你的方法果然可行,我一直以為 只能用在字串和字串相加, 沒想到用在字串和字元的相加也可以。 我自己的試驗過程中也覺得有點怪怪,安裝好 Delphi 後,如果沒有更動 過設定值,用 string 保留字來宣告的變數,應該是預設為 AnsiString, 但我的試驗結果卻告訴我,那會是 ShortString,這跟Delphi的 Help 所 講的不一樣。 謝謝您的解答。
系統時間:2024-05-18 15:32:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!