「テキストファイルの保存」の問題皆さんこんにちは、
Mac OS では正常に動作していたのに、Windows では動作しなかったスクリプトで、過去数日間 (最後の数日間) 髪を引き裂いています。 いろいろ比較した結果、テキストファイルの作り方の違いによるものであることがわかりました。 このファイルは、JSL関数「プログラムの実行」を使用してJMP内で実行する別のプログラムへの入力として機能するため、作成する必要があります。 これはすべてMacで正常に機能します。 テキスト ファイルを生成する最初の小さなコードは次のとおりです。
filename = Eval Insert( "^simdir^^lakename^/^lakename^.par" );
lakepar = Eval Insert(
"\[{
"Input" : {
"Initial conditions" : "^simdir^^lakename^/icond.dat",
"Grid" : 24,
"Morphology" : "^simdir^^lakename^/hypso.dat",
"Forcing" : "^simdir^^lakename^/forcing.dat",
"Absorption" : "^simdir^^lakename^/lightextinction.dat",
"Inflow" : "^simdir^^lakename^/Qin.dat",
"Outflow" : "^simdir^^lakename^/Qout.dat",
"Inflow temperature" : "^simdir^^lakename^/Tin.dat",
"Inflow salinity" : "^simdir^^lakename^/Sin.dat"
},
.
.
.
.
}
}
]\"
);
Save Text File( filename, lakepar, "replace" );
Mac OS では、出力テキスト ファイルはすべて適切に整理され、次のようになります。
{
"Input" : {
"Initial conditions" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/icond.dat",
"Grid" : 24,
"Morphology" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/hypso.dat",
"Forcing" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/forcing.dat",
"Absorption" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/lightextinction.dat",
"Inflow" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Qin.dat",
"Outflow" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Qout.dat",
"Inflow temperature" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Tin.dat",
"Inflow salinity" : "/Users/yvesprairie/Dropbox/sim3/Petit-Saut/Sin.dat"
},しかし、Windows では、それはすべて、長く連続的に折り返される行のようなものです。 奇妙なことに、問題ないように見えるのでここに貼り付けることさえできませんが、Atom などのテキスト エディターでファイルを開くと、ファイルが大きく異なって見えます。 この違いにより、ファイルは「プログラムの実行」実行可能ファイルによって読み取れなくなります。 隠し文字に関係していると思いましたが、Mac と Windows の両方のバージョンで、設定でまったく同じ「テキスト ファイルの保存」オプション (CR + LF、およびフィールドの終わりとしてコンマ) を使用し、テキスト ファイルを Unicode として保存するオプション。 他に何を試すべきかわかりません。 どんな助け/提案も大歓迎です。
よろしく、 イヴ
Re: 「テキストファイルの保存」の問題あなたのソリューションは魅力のように機能しました。どうもありがとうございました! イヴ
Re: 「テキストファイルの保存」の問題詳細な説明をありがとうございました。 私はそれらを試して報告します! ありがとう、イヴ
Re: 「テキストファイルの保存」の問題Mac と Win (および Linux) では、改行の使用方法に関して奇妙で異なる歴史があります。 ここでは、さまざまなことが起こっています。
- 文字列にある種の改行シーケンスを入れています。 Win と Mac では異なる場合があります。
- SaveTextFile は、改行でホスト固有の変換を行っている可能性があります。 異なる場合があります...
- エディターが異なれば、改行シーケンスの扱いも異なる場合があります。 異なる場合があります...
JMP は最初の 2 つを制御でき、ほとんどの場合、エディタで機能する一連の改行文字を見つけることができます。
改行シーケンスを設定するには、これらのいずれかを試して、CR と LF のシーケンスを予測可能なシーケンスに置き換えます
lakepar = regex(lakepar,"[\n\r]+","\!n",GLOBALREPLACE);
// or
lakepar = regex(lakepar,"[\n\r]+","\!r",GLOBALREPLACE);
// or
lakepar = regex(lakepar,"[\n\r]+","\!r\!n",GLOBALREPLACE);
LF、CR、または CRLF は、改行シーケンスの通常の可能性です。
savetextfile が改行シーケンスをホストが必要とするものに変換しないようにするには、blob を保存します。
saveTextFile( "$desktop/x.txt", chartoblob(lakepar) );
文字列またはファイルを覗くには、blob を使用します。
show(chartoblob(lakepar));
// or
show(loadtextfile( "$desktop/x.txt", blob));// to view
Load Text File("$desktop/x.txt", blob) = Char To Blob( "abc~0D~0Adef~0D~0Aghiu", "ascii~hex" );
~0D は CR で ~0A は LF です
Re: 「テキストファイルの保存」の問題必要な場所に改行文字を入力する必要があります。Windows では、改行文字シーケンスは \!n です。