Delphiの文字列変換関数の使い方|StrToIntDef・StrToFloat・StrToDateTimeを解説
Delphiで文字列を数値や日付・時刻に変換するには、「StrToIntDef」「StrToFloat」「StrToDateTime」などの関数を使うのが基本です。
これらの関数は、入力値が不正な場合でもデフォルト値を返すことで、エラーを回避しながら安全に処理できます。
本記事では、各関数の基本的な使い方から、実行例・注意点までを図解付きで丁寧に解説します。
整数値変換
| 関数 | 説明 |
|---|---|
| StrToInt(文字列:String):Integer | 文字列を整数値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToIntDef(文字列:String, デフォルト値:Integer):Integer | 文字列を整数値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| StrToUInt(文字列:String):Cardinal | 文字列を正の整数値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToUIntDef(文字列:String, デフォルト値:Cardinal):Cardinal | 文字列を正の整数値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| StrToInt64(文字列:String):Int64 | 文字列を整数値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToInt64Def(文字列:String, デフォルト値:Int64):Int64 | 文字列を整数値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| StrToUInt64(文字列:String):UInt64 | 文字列を正の整数値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToUInt64Def(文字列:String, デフォルト値:UInt64):UInt64 | 文字列を正の整数値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| TryStrToInt(文字列:String, Out 変換後値:Integer):Boolean |
文字列を整数値に変換する。変換が成功した場合はTrueを返す
var
i: Integer;
begin
if TryStrToInt('123', i) then
ShowMessage(IntToStr(i))
else
ShowMessage('変換失敗');
end;
|
ブール値変換
| 関数 | 説明 |
|---|---|
| StrToBool(文字列:String):Boolean | 文字列をブール値に変換して返す。文字列が数値のみの場合、0以外はTrueを返し、0はFalseを返す。有効な文字列でない場合はエラーになる。 |
| StrToBoolDef(文字列:String, デフォルト値):Boolean | 文字列をブール値に変換して返す。文字列が数値のみの場合、0以外はTrueを返し、0はFalseを返す。有効な文字列でない場合はデフォルト値を返す。 |
| TryStrToBool(文字列:String, Out 変換後値:Boolean):Boolean |
文字列をブール値に変換する。変換が成功した場合はTrueを返す
var
b: Boolean;
begin
if TryStrToBool('True', b) then
ShowMessage(BoolToStr(b))
else
ShowMessage('変換失敗');
end;
|
小数値変換
| 関数 | 説明 |
|---|---|
| StrToFloat(文字列):Extended | 文字列を小数値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToFloatDef(文字列:String, デフォルト値:Extended):Extended | 文字列を小数値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| TryStrToFloat(文字列:String, Out 変換後値:Extended):Boolean |
文字列を小数値に変換する。変換が成功した場合はTrueを返す
var
f: Double;
begin
if TryStrToFloat('123.45', f) then
ShowMessage(FloatToStr(f))
else
ShowMessage('変換失敗');
end;
|
通貨値変換
| 関数 | 説明 |
|---|---|
| StrToCurr(文字列:String):Currency | 文字列を通貨値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToCurrDef(文字列:String, デフォルト値:Currency):Currency | 文字列を通貨値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
日付時刻値変換
| 関数 | 説明 |
|---|---|
| StrToDate(日付文字列:String):TDateTime | 日付文字列を日付値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToDateDef(日付文字列:String, デフォルト値:TDateTime):TDateTime | 日付文字列を日付値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| StrToTime(時刻文字列:String):TDateTime | 時刻文字列を時刻値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToTimeDef(時刻文字列:String, デフォルト値:TDateTime):TDateTime | 時刻文字列を時刻値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| StrToDateTime(日時文字列:String):TDateTime | 日時文字列を日付時刻値に変換して返す。有効な文字列でない場合はエラーになる。 |
| StrToDateTimeDef(日時文字列:String, デフォルト値:TDateTime):TDateTime | 日時文字列を日付時刻値に変換して返す。有効な文字列でない場合はデフォルト値を返す。 |
| TryStrToDateTime (文字列:String, Out 変換後値:TDateTime):Boolean |
文字列を日付時刻値に変換する。変換が成功した場合はTrueを返す
procedure TForm1.Button1Click(Sender: TObject);
var
d: TDateTime;
begin
if TryStrToDateTime('2024/4/1 1:1:1', d) then
ShowMessage(DateTimeToStr(d))
else
ShowMessage('変換失敗');
end;
|
整数値変換
StrToInt関数
文字列を整数値に変換して返す。有効な文字列でない場合はエラーになる。
StrToInt(書式文字列)
例1
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i:=StrToInt('24');
ShowMessage(i.ToString);
end;
// 24が表示される
例2
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i:=StrToInt('24.4');
ShowMessage(i.ToString);
end;
// エラーになる
例3
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i:=StrToInt('-24');
ShowMessage(i.ToString);
end;
// -24が表示される
StrToIntDe関数
文字列を整数値に変換して返す。有効な文字列でない場合はデフォルト値を返す。
StrToIntDef(文字列, デフォルト値)
例1
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i:=StrToIntDef('24', 0);
ShowMessage(i.ToString);
end;
// 24が表示される
例2
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i:=StrToIntDef('24.0', 0);
ShowMessage(i.ToString);
end;
// 0が表示される
例3
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
i:=StrToIntDef('24a', 0);
ShowMessage(i.ToString);
end;
// 0が表示される
ブール値変換
StrToBool関数
文字列をブール値に変換して返す。文字列が数値のみの場合、0以外はTrueを返し、0はFalseを返す。有効な文字列でない場合はエラーになる。
StrToInt(書式文字列)
例1
procedure TForm1.Button1Click(Sender: TObject);
var b:Boolan;
begin
i:=StrToInt('True');
ShowMessage(i.ToString);
end;
// -1が表示される
例2
procedure TForm1.Button1Click(Sender: TObject);
var b:Boolan;
begin
i:=StrToInt('false');
ShowMessage(i.ToString);
end;
// 0が表示される
例3
procedure TForm1.Button1Click(Sender: TObject);
var b:Boolan;
begin
i:=StrToInt('truefalse');
ShowMessage(i.ToString);
end;
// エラーになる
例4
procedure TForm1.Button1Click(Sender: TObject);
var b:Boolan;
begin
i:=StrToInt('0000');
ShowMessage(i.ToString);
end;
// 0が表示される
日付時刻値変換
StrToDate関数
(日付のみ)文字列を日付時刻値に変換して返す。有効な文字列でない場合はエラーになる。
StrToDate(日付文字列)
例1
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToDate('2025/02/28');
ShowMessage(FormatDateTime('yyyy/mm/dd', d));
end;
// 2025/02/28が表示される
例2
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToDate('2025/02/29');
ShowMessage(FormatDateTime('yyyy/mm/dd', d));
end;
// エラーになる
例3
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToDate('2025/02/01 11:01:01');
ShowMessage(FormatDateTime('yyyy/mm/dd', d));
end;
// エラーになる
StrToTime関数
(時刻のみ)文字列を日付時刻値に変換して返す。有効な文字列でない場合はエラーになる。
StrToTime(時刻文字列)
例1
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToTime('23:59:59');
ShowMessage(FormatDateTime('yyyy/mm/dd hh:nn:ss', d));
end;
// 1899/12/30 23:59:59が表示される
例2
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToTime('2025/01/01 23:59:59');
ShowMessage(FormatDateTime('yyyy/mm/dd hh:nn:ss', d));
end;
// エラーになる
StrToDateTime関数
(日時)文字列を日付時刻値に変換して返す。有効な文字列でない場合はエラーになる。
StrToDateTime(日時文字列)
例1
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToDateTime('2025/02/28 23:59:59');
ShowMessage(FormatDateTime('yyyy/mm/dd hh:nn:ss', d));
end;
// 2025/02/28 23:59:59が表示される
例2
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToDateTime('2025/02/28');
ShowMessage(FormatDateTime('yyyy/mm/dd hh:nn:ss', d));
end;
// 2025/02/28 00:00:00が表示される
例3
procedure TForm1.Button1Click(Sender: TObject);
var d:TDateTime;
begin
d:=StrToDateTime('23:59:59');
ShowMessage(FormatDateTime('yyyy/mm/dd hh:nn:ss', d));
end;
// 1899/12/30 23:59:59が表示される
