[文字列型、文字型、文字の配列 を相互変換する]
文字列型、文字型、文字の配列 を相互に変換して表示します。
Delphiでは、文字列は string型、文字は Char型、文字配列(ヌルで終わる文字列)はPChar型で表します。
Charの配列を含めた4つの型で、それぞれに相互変換変換する方法は下記の通りです。
String ->
Char :インデックスで1文字指定し代入
PChar :PCharでキャストし代入、または、Getmemでメモリを確保しstrCopyで代入
Charの配列 :strCopyで代入
Char ->
String :直接代入 または、stringでキャストし代入
PChar :stringにキャストし、さらにPCharにキャストして代入(?)
Charの配列 :インデックスを指定して代入(?)
PChar ->
String :直接代入、または、stringでキャストし代入
Char :インデックスで1文字指定し代入
Charの配列 :strCopyで代入
Charの配列->
String :直接代入、または、stringでキャストし代入
Char :インデックスで一文字指定し代入
PCha :直接代入
【ソースコード】 [tips0028.pas]
program tips0028;
{$APPTYPE CONSOLE}
uses SysUtils;
var
C:Char;
S:String;
P:PChar;
CS:array[0..255] of Char;
begin
S:='ABCD';
C:=S[3];
WriteLn('(1-1)string->Char: ',C);
S:='ABCD';
P:=PChar(S);
WriteLn('(1-2)string->PChar: ',P);
getMem(P,Length(S)+1);
try
StrCopy(P,PChar(S));
WriteLn('(1-2)string->PChar: ',P);
finally
FreeMem(P);
end;
S:='ABCD';
strCopy(CS,PChar(s));
WriteLn('(1-3)string->Charの配列: ',CS);
C:='A';
S:=C;
WriteLn('(2-1)Char->string: ',S);
S:=string(C);
WriteLn('(2-1)Char->string: ',S);
C:='A';
P:=PChar(string(C));
WriteLn('(2-2)Char->PChar: ',P);
C:='A';
strCopy(CS,' ');
CS[0]:=C;
WriteLn('(2-3)Char->Charの配列: ',CS);
P:='ABCD';
S:=P;
WriteLn('(3-1)PChar->string: ',S);
S:=string(P);
WriteLn('(3-1)PChar->string: ',S);
P:='ABCD';
C:=P[2];
WriteLn('(3-2)PChar->Char: ',C);
P:='ABCD';
StrCopy(CS,P);
WriteLn('(3-3)PChar->Charの配列: ',CS);
CS:='ABCD';
S:=CS;
WriteLn('(4-1)Charの配列->string: ',S);
S:=string(CS);
WriteLn('(4-1)Charの配列->string: ',S);
CS:='ABCD';
C:=CS[2];
WriteLn('(4-2)Charの配列->Char: ',C);
CS:='ABCD';
P:=CS;
WriteLn('(4-3)Charの配列->PChar: ',P);
end.
【コンパイル&実行】 [tips0028.bat]
dcc32 tips0028.pas
tips0028.exe > tips0028.txt
pause
【実行結果】 [tips0028.txt]
(1-1)string->Char: C
(1-2)string->PChar: ABCD
(1-2)string->PChar: ABCD
(1-3)string->Charの配列: ABCD
(2-1)Char->string: A
(2-1)Char->string: A
(2-2)Char->PChar: A
(2-3)Char->Charの配列: A
(3-1)PChar->string: ABCD
(3-1)PChar->string: ABCD
(3-2)PChar->Char: C
(3-3)PChar->Charの配列: ABCD
(4-1)Charの配列->string: ABCD
(4-1)Charの配列->string: ABCD
(4-2)Charの配列->Char: C
(4-3)Charの配列->PChar: ABCD
Copyright c 2009, ohishi,All rights reserved.