ホーム >プログラム >Delphi 6 ローテクTips

Unicode対応ChangeFileExt

Unicode対応ChangeFileExt。

interface

function ChangeFileExtW(sFile, sExt: WideString): WideString;


implementation

function ChangeFileExtW(sFile, sExt: WideString): WideString;
//Unicode対応ChangeFileExt。
var
  i: Integer;
begin
  Result := '';

  if (sExt <> '') and (sExt[1] <> '.') then begin
    //sExtが空文字でなく頭がピリオドがなければつけたす。
    sExt := '.' + sExt;
  end;

  for i := Length(sFile) downto 1 do begin
    if (sFile[i] = '\') or (sFile[i] = ':') then begin
      //拡張子なし
      Result := sFile + sExt;
      Break;
    end else if (sFile[i] = '.') then begin;
      //拡張子あり
      if (i > 1) then begin
        Result := Copy(sFile, 1, i -1) + sExt;
      end else begin
        Result := sExt;
      end;
      Break;
    end;
  end;
  if (Result = '') then Result := sExt;
end;

オリジナルのChangeFileExtと違い、sExtの頭にピリオドがついていなければ付け足します。

  if (sExt <> '') and (sExt[1] <> '.') then begin
    //sExtが空文字でなく頭がピリオドがなければつけたす。
    sExt := '.' + sExt;
  end;

この部分をコメントアウトすればオリジナルと同じ動作になると思います。