About Char String |
尚未結案
|
LPH
一般會員 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
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 發送簡訊給我 |
若是要轉入 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 發送簡訊給我 |
參考
....
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
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |