線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1432
推到 Plurk!
推到 Facebook!

About Char String

尚未結案
LPH
一般會員


發表:53
回覆:43
積分:19
註冊:2003-04-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-26 12:32:53 IP:218.162.xxx.xxx 未訂閱
請問 如何將 String 形態的資料 轉給 Char Array
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-26 12:48:59 IP:61.59.xxx.xxx 未訂閱
procedure TForm1.FormCreate(Sender: TObject);
var
    d:array[1..5] of char;
    s:string;
begin
    s:='12345';
    d[1]:=s[2];
    self.Caption:=d[1];
end;
請參考範例
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-26 14:51:15 IP:211.76.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject); var d:array[0..5] of char; s:string; begin s:='12345'; StrCopy(d,Pchar(s)); showmessage(StrPas(d)); end; 或 procedure TForm1.Button1Click(Sender: TObject); var d:array[1..5] of char; s:string; begin s:='12345'; StrCopy(@d,Pchar(s)); showmessage(StrPas(@d)); end;
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-26 17:44:43 IP:61.221.xxx.xxx 未訂閱
若是要轉入 char array 而非 #0 terminated 字串, 必須使用迴圈來進行, 如下:
procedure TForm1.Button3Click(Sender: TObject);
var
  d: array of char;
  s, s2: string;
  i: integer;
begin
  s:= '12345';
  SetLength(d, length(s));
  for i:= 0 to length(d) - 1 do
  begin
    d[i] := s[i 1];
  end;
  //..
  // 驗證資料正確 將資料寫入 s2 string
  for i:= 0 to length(d)-1 do
  begin
    s2 := s2   d[i];
  end;
  showmessage(s2);
end;
若是要轉入的 char array 是 #0 ternimated 的字元陣列, 就可以不用上面的迴圈了, 可以直接使用 cmj 兄提出的 StrCopy 方法, 要注意的是轉入的 char array 的長度因為要多一個 #0 結尾的空間, 所以陣列的長度是原字串長度加1, 最後再利用 StrPas 將這種型態的資料轉回 string 驗證, 程式如下:
procedure TForm1.Button2Click(Sender: TObject);
var
    d:array of char;
    s:string;
begin
    s:='12345';
    SetLength(d, length(s) 1);
    StrCopy(@(d[0]), PChar(s));
    //..
    // 驗證資料正確
    Showmessage(StrPas(@(d[0])));
end;
若是轉入的 char array 是靜態陣列的話, 就如同 cmj 兄及 ddy 兄的方式進行即可, 只是 cmj 兄的第二個例子的靜態陣列長度由 1開始的話, 必須到 6結束才不會有問題!!
banson1716
高階會員


發表:55
回覆:182
積分:167
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-28 11:46:26 IP:61.223.xxx.xxx 未訂閱
參考 .... public { Public declarations } end; type TMyRec = record MyArray : array [1..1000] of char; mystr : string; end; var Form1: TForm1; MyRec : TMyRec; mylist : TStringlist; PMyChar : PChar; myfile : file; mb : TStream; implementation {$R *.DFM} //寫入 procedure TForm1.Button1Click(Sender: TObject); begin assignfile(myfile, 'c:\my.txt'); rewrite(myfile,1); fillchar(MyRec.MyArray,sizeof(MyRec.MyArray),#0); pmychar:=@MyRec.MyArray; StrPCopy(pmychar,memo1.text); Blockwrite(MyFile,MyRec,SizeOf(MyRec)); closefile(MyFile); end; //讀出 procedure TForm1.Button2Click(Sender: TObject); begin assignfile(myfile, 'c:\My.txt'); reset(myfile,1); fillchar(MyRec.MyArray,sizeof(MyRec.MyArray),#0); Blockread(MyFile,MyRec,SizeOf(MyRec)); pmychar:=@MyRec.MyArray; Memo1.SetTextBuf(pmychar); end; ..... 發表人 - banson1716 於 2003/04/28 11:50:41
系統時間:2024-07-01 14:54:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!