getinistr で空白が消えるNo.03357
Iranoan さん 03/11/17 18:25
 
 秀丸担当さん今日は、Iranoan です。
writeinistr macrodir + "\\a", "a", "a", " a";
while( getinistr(macrodir + "\\a", "a", "a") == " a" );
が、無限ループになりません。
 原因は getinistr 関数を使ったときに、先頭の空白が削除されたりされな
かったりする為です。Win32API を呼び出しているだけで、対処の使用がない
気もしますが、一応ご連絡しておきます。
 こちらの環境は、Windows98+IE6.0+秀丸 Ver.4.02 です。

[ ]
RE:03357 getinistr で空白が消えるNo.03358
たーびん さん 03/11/17 18:34
 
空白文字を含む場合は、書込み時にダブルクォーテーションで囲むのが
確実だったと思います。
(読込時にトリムされます)


> writeinistr macrodir + "\\a", "a", "a", " a";

でなくて、

  writeinistr macrodir + "\\a", "a", "a", "\" a\"";

ではどうでしょうか?

[ ]
RE:03358 getinistr で空白が消えるNo.03359
Iranoan さん 03/11/17 18:49
 
 たーびんさん今日は、Iranoan です。
> 空白文字を含む場合は、書込み時にダブルクォーテーションで囲むのが
> 確実だったと思います。
 すいません。この対処は知っていたのですが、
> 先頭の空白が削除されたりされな
> かったりする    ^^^^^^^^^^^^^^
> ^^^^^^^^^^^^
という動きをする為に、念のため投稿しました。

[ ]
RE:03359 getinistr で空白が消えるNo.03360
たーびん さん 03/11/17 19:11
 
> たーびんさん今日は、Iranoan です。
>> 空白文字を含む場合は、書込み時にダブルクォーテーションで囲むのが
>> 確実だったと思います。
> すいません。この対処は知っていたのですが、
>> 先頭の空白が削除されたりされな
>> かったりする    ^^^^^^^^^^^^^^
>> ^^^^^^^^^^^^
>という動きをする為に、念のため投稿しました。

失礼しました。
確かに謎な動きですね。

[ ]
RE:03359 getinistr で空白が消えるNo.03361
アルビレオ さん 03/11/17 19:28
 
アルビレオです。

>> 先頭の空白が削除されたりされな
>> かったりする    ^^^^^^^^^^^^^^
>> ^^^^^^^^^^^^
>という動きをする為に、念のため投稿しました。

もともとのWindowsAPI(GetPrivateProfileString)がそういう動作をします。
あまり厳密に調べたわけではありませんが、OSによっても結果が違うので
・ダブルクォートでくくる
または
・空白文字(SPACE,TABなど)を使わない
で対処するくらいしかないでしょう。

[ ]
RE:03361 getinistr で空白が消えるNo.03362
秀まるお さん 03/11/18 16:51
 
 秀丸担当は風邪でお休みでして、僕がコメントします。

 というか、既にアルビレオさんのコメントにある通りのようですね。(僕も知
らなかったけど)

 自分でINIファイルアクセス関数を自作する訳にもいかないので、仕様ってこ
とでお願いします。

[ ]
RE:03362 getinistr で空白が消えるNo.03364
Iranoan さん 03/11/18 17:31
 
 秀まるおさん今日は、Iranoan です。
>  自分でINIファイルアクセス関数を自作する訳にもいかないので、仕様ってこ
> とでお願いします。
 了解しました。

[ ]