kmiya-culti / RLogin

RLoginは、Windows上で動作するターミナルソフトです
http://nanno.bf1.jp/softlib/man/rlogin/
MIT License
464 stars 16 forks source link

script unknow errorについて #70

Closed dokatsu closed 3 years ago

dokatsu commented 3 years ago

ファイルから1行読み込んで、正規表現を使って表示文字列から検索を行うスクリプトの1部分です。 2.26.0にバージョンを上げたところ、このスクリプトを実行するとscript unknow errorのメッセージが出るようになりました。replaceの行をコメントアウトすると、メッセージが出なくなったので、ここが怪しいのですが。 文法的に問題がありますでしょうか? やりたいことは、1行取得した文字列の改行部分を削除したいのです。 どうやるべきかアドバイスをお願いします。

    len = file(inputFileName);
    // 検索文字列の配列を作成
    for( pattancode = 0 ; pattancode < len ; pattancode++ )
    {
        // 改行コードの削除
        len[pattancode]=replace("[\n|\r]", "", len[pattancode]);
        // 正規表現を準備する
        p[pattancode] = regopen(len[pattancode]);
    }
kmiya-culti commented 3 years ago

replaceにバグがあり行末の文字を置換すると例外が発生していました。 ご報告有り難うございます。次回バージョンで修正したいと思います。

http://nanno.dip.jp/softlib/rlogin/2.26.1/

少し気になる部分としては、正規表現にエスケープ文字を渡す場合にスクリプト内でもエスケープ文字を解釈するので注意が必要かもしれません。今回の場合は、エスケープ処理された文字を渡しても問題ないと思いますが・・・ それから"[]"内での"|"は、意図した文字"|"の置換でしょうか?

len[pattancode]=replace("[\\n\\r]", "", len[pattancode]);
dokatsu commented 3 years ago

2.26.1で例外エラーが発生しなくなりましたのでClose致します。

Replaceの"|"ですが、orの意味で使用していました。 "[\n\r]"(\は2つずつ)で試してみましたが、問題ありませんでしたので、こちらの方法に置き換えて使用したいと思います。 対応ありがとうございました。