[Delphi]文字列の部分取得 Copy関数

Delphiの「文字列の一部の文字を取り出せる Copy 関数」についてです。

※全てのDelphiで動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます

 

Delphiメニューへ戻る

 

Copy関数のサンプル1

フォーム上に TButton を4つ配置し、それぞれの OnClick に下記を記述しました。

 

procedure TForm1.Button1Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'Japan';
    r_st := Copy(st, 1, 3);

    ShowMessage(r_st);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'がんばれ日本';
    r_st := Copy(st, 1, 3);

    ShowMessage(r_st);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'Japan';
    r_st := Copy(st, 2, 3);

    ShowMessage(r_st);
end;

procedure TForm1.Button4Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'がんばれ日本';
    r_st := Copy(st, 2, 3);

    ShowMessage(r_st);
end;

 

実行結果

[Delphi]Copy関数の実行サンプル

※重要な補足:Delphi7の頃のCopy関数では、日本語1文字を2バイトで扱っていたので、上記の結果とは異なります。

例えば日本語「がんばれ日本」で Copy(st, 1, 3) の時、通常のDelphiは「最初から3文字をコピー」するので「がんば」ですが、古いDelphiだと「最初から3バイトをコピー」するので、「が●」(●は文字化け)となる可能性があります。古いプログラムを移行する際のCopy関数は注意が必要です。

 

Copy関数のサンプル2

もしファイル名(flname)の先頭の3文字がABCなら・・・

if Copy(flname, 1, 3) = 'ABC' then

先頭1文字目(1)から3文字目(3)までが ABCなら真

真 ABC.txt, ABCxyz.txt

偽 BCD.txt, ZABC.txt

 

※下記はヘルプからの引用です

function Copy(S: string;
Index: Integer;
Count: Integer): string;

文字列または動的配列の一部を返します。

S は,文字列型または動的配列型の式です。Index と Count は整数型の式です。Copy 関数は,S[Index] から Count 個の文字または要素の入った部分文字列または部分配列を返します。

 

詳細なヘルプ

System.Copy – RAD Studio API Documentation (embarcadero.com)

 

Delphiメニューへ戻る

8

ほかの Delphi の記事

[Delphi]日付時刻を文字列に変換 FormatDateTime関数

[Delphi]リストの文字列検索 TStrings.IndexOf

[Delphi] メッセージボックスのサンプル文と画像

[Delphi]ファイルを開く場合

Ads Blocker Image Powered by Code Help Pro

誤表示の場合はおゆるし下さい。[更新]をタップして下さい。

この記事のQRコード
このサイトのQRコード