delphi.gif (306 バイト) 文字列の操作


DelphiはCスタイル(NULLターミネート)文字列とPascalスタイル文字列があります。

toach.gif (917 バイト) 文字列の宣言

C文字列の宣言

p: PChar; // Cではchar *p;
この場合、pはポインタなので文字列領域は次のようにして確保しなければなりません。
    p := AllocStr(80);
あるいは
    buff: array[0..79] of Char;
    ...
    p := buff;

Pascal文字列の宣言

s: String;

C文字列は、ポインタなので動的に領域を確保するなどして使用します。Pascal文字列は領域を確保せずに使用できます。デフォルトでは長い文字列が使用できますが、$H-オプションを使用した場合、長さは255までになります。これは下位互換性のためのものです。

 

toach.gif (917 バイト) Pascal文字列とC文字列の変換の方法

function StrPas(Str:PChar): string;

StrPas はC文字列 Str を Pascal 文字列に変換します。

function StrPCopy(Dest: PChar; const Source: string): PChar;

StrPCopy は Pascal 文字列を,C文字列にコピーします。

 

toach.gif (917 バイト) Cスタイル文字列を操作する関数

関数

機能

StrAlloc C文字列にバッファを割り当て,文字列の最初の文字を指すポインタを返します。
StrBufSize StrAlloc で割り当てた文字列バッファに格納できる最大文字数を返します。
StrCat Sourceのコピーを Dest の最後に追加し,結合された文字列を返します。
StrComp Str1 を Str2 と比較します。
StrCopy Source を Dest にコピーしてから Dest を返します。
StrDispose 文字列を破棄します。
StrECopy Source を Dest にコピーし,文字列の末尾のヌル文字を指すポインタを返します。
StrEnd ヌルで終わる文字列の末尾を指すポインタを返します。
StrFmt 配列のエントリを形式化します。
StrIComp 指定された文字数分だけ 2 つの文字列を比較します。
StrLCat 指定された文字数を文字列に追加します。
StrLComp 指定された文字数分だけ 2 つの文字列を比較します。
StrLCopy 指定された文字数を Source から Dest にコピーします。
StrLen 文字列内のヌルターミネータを除いた文字数を返します。
StrLFmt 指定されたオープン配列の一連の引数を形式化します。
StrLIComp 指定された文字数分,大文字と小文字の区別なしに 2 つの文字列を比較します。
StrLower 文字列を小文字に変換します。
StrMove 指定された文字数を文字列にコピーします。
StrNew ヒープの領域を割り当てて文字列をコピーし,その文字列を指すポインタを返します。
StrPCopy Pascal スタイルの文字列を,ヌルで終わる文字列にコピーします。
StrPLCopy Pascal スタイルの文字列の文字を,ヌルで終わる文字列にコピーします。
StrPos Str1 内の最初の Str2 を指すポインタを返します。
StrRScan Str 内の最後の Chr を指すポインタを返します。
StrScan 文字列内の最初の指定文字を指すポインタを返します。
StrUpper 文字列を大文字にして返します。

 

toach.gif (917 バイト) Pascalスタイル文字列の操作

連結 +演算子を使用して2つの文字列を連結します。
s := s1 + s2;
Concat関数を使用して連結することもできます。
部分文字列 Copy関数を使用して部分文字列を得ることができます。
部分文字列の削除 Delete手続きを使用すると、文字列の一部を削除できます。
挿入 Insert手続きを使用して、文字列を別の文字列に挿入できます。
文字列の長さ Length関数は文字列の長さを返します。
部分文字列の位置 Pos関数は文字列内の指定された部分文字列の位置を返します。
形式化 Format関数は指定した形式で数値や文字列を変換します。

 

toach.gif (917 バイト) 文字列と数値の変換

IntToStr 整数をPascal文字列に変換します。
DateToStr DateToStr は TDateTime 型の変数を指定された形式のPascal文字列に変換します。
FloatToStr 浮動小数点値をPascal文字列に変換します。
IntToHex 整数の 16 進表現Pascal文字列を返します
StrToInt 整数(10 進または 16 進表記)を表すPascal文字列を数値に変換します
StrToIntDef 文字列を数値に変換します。
TimeToStr TDateTime 変数から文字列を返します。
Val 文字列を数値表現に変換します。

 

toach.gif (917 バイト) 文字列内で制御文字を使うには

#を使うと文字列内で制御文字が使えます。

'#9TAB'

'#13#10'

 

toach.gif (917 バイト) 文字の判別

判別関数 機能
IsCharLower 小文字かどうか判別
IsCharUpper 大文字かどうか判別
IsCharAlpha 英字かどうか判別
IsCharAlphaNumeric 英数字かどうか判別

 

toach.gif (917 バイト) 文字の変換

小文字を大文字に変換する

    while p^ <> Char(0) do
    begin
      if IsCharLower(p^) then
        p^ := Char(Ord(p^) - Ord('a') + Ord('A'));
      Inc(p);
    end;
    Result := StrPas(buff);

上のようにしないで、UpCase(ch:Char)も使えます。

 

toach.gif (917 バイト) 16進数文字列の扱い

16進数電卓(サンプルプログラム)を参考にしてください。