▼ すいさん
> >> なお、PPAのExecを利用して、ファイル名を変更するのでも同じ目的は達成できるのですが、これもできません。
> >> 具体的には、編集中のファイル名(フルパス)をfilenameという名前の変数に取り込み、
> >> これの拡張子(htm)をhtmlに変更したいのです。
> >
> >手順としては、
> >1.ファイルを閉じて(無題) - S_FileClose();
> >2.ファイル名を変更 - Exec('command.com','/c "'+oldname + '" "'+ newname + '"' , True);
> >3.新しいファイル名のファイルを開く - S_FileOpen(newname);
> >という処理になるハズ。
> ↑これ、↓こんなんでよろし?
> ----------
> // 実行には PPA.DLL が必須です。
> // TAB = 4
>
> var // 変数を確保する場所
> oldname,newname:String; // 文字列変数を用意
> ext:String; // 文字列変数を用意
> CRLF:String; // Debug 用 文字列変数を用意
> pt:Integer; // 整数数値変数を用意
> begin // ここより処理内容の記述
> CRLF := '
> ';
> oldname := S_GetFilename(); // ファイル名を取得する。
>
> // ↓ファイル名末尾 4文字を取り出し、英小文字に変換して文字列変数 ext へ取り込む
> ext := LowerCase( Copy(oldname , Length(oldname)-3 ,4) );
>
> if ( ext = '.htm' ) then // 拡張子が .htm なら
> begin
> // 拡張子を変更する。
> newname := Delete(oldname , Length(oldname)-3 ,4) + '.html';
>
> // ファイル名からディレクトリ部分を削除する。
> repeat
> pt := Pos('\',newname); // pt := '\' の位置
> newname := Delete(newname,1,pt); // newname := 先頭~'\' を削除した文字列
> until( pt = 0 ); // '\' が見つからなかった( pt == 0 )ら、ループ脱出
>
> MessageBox( 'Old:' + oldname + CRLF + 'New:' + newname , 'Debug' , 0 );
>
> S_FileClose(); // 閉じて(無題)
> Exec('command.com' , '/c ren "'+oldname + '" "'+ newname + '"' , True); // for Win95系
> S_FileOpen(newname);
> end;
> end;
> ----------