HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0129
hamhsp3utf.asを使うと読み込めなくなるファイルパス?5解決


ham

リンク

2020/1/29(Wed) 11:17:40|NO.89357

hsp3utf.asをインクルードすると特定のファイルパスで
ファイルが読み込めなくなってしまう現象を見つけたので報告を兼ねて質問させて頂きます。

問題のファイルパスは卑猥なワードを含んでいるのでこちらに貼っておきます。
https://pastebin.com/Kbh2QZMB


デバッグで確認するとファイルパス自体はちゃんと読み取れているのですが、
existでファイルサイズを取得しようとすると-1になってしまい
picloadやnoteloadもファイルが無い扱いにされてしまいます。

文字を変えたりフォルダの階層を一つ減らしたりすると直ったりします。


hsp3utf.asの中身を見ても自分には仕組みがさっぱりでして・・・
原因や直し方など分かる方いますでしょうか?



この記事に返信する


ham

リンク

2020/1/29(Wed) 14:45:32|NO.89358

すぐに試せるようにzipにして公開しておきます。

(OneDrive)
https://1drv.ms/u/s!AjmS2m0yFuH3gdxomTNJFkIAi_8GWg?e=oNYdNu



あらや

リンク

2020/1/29(Wed) 15:39:47|NO.89359

おそらくですが……
パスが長すぎるのが問題かと思われます。

WindowsAPIの仕様上の問題でフルパスは基本的に259バイトまでです。

通常のSJIS文字列なら問題ないのですが、
hsp3utfを使った場合、パスの文字列が260バイトを超えてしまいます。

パスの文字列をもう少し短くすると読み書き可能になるはずです。



ham

リンク

2020/1/29(Wed) 17:34:12|NO.89360

ご返信ありがとうございます!
ファイルパスって長さに制限があるんですね。

パスの内容じゃなくて長さのせいでしたねこれ...
hsp3utfを使わなくても長すぎるとやっぱり駄目でした。

でもメモ帳やペイントなどのソフトでは読み込めました。
どういう違いなんでしょう?

できればファイルパスは変えずに読み込めたら非常に助かるのですが...



沢渡

リンク

2020/1/29(Wed) 17:40:48|NO.89361

Unicodeのファイル名はバイト数は問題にはならず、文字数だけが問題になる筈だから、
バイト数は関係ないのでは……と考えたのですが、
(実際、convstowでUTF-16に変換し、PathFileExistsWでファイルが存在するかを
 確かめたら、ちゃんと存在が確認できた)

もしかしたら、と思いOpenHSPを見てみたら、どうもファイルの最大文字数を
最大バイト数基準で設定している様子?
そこで試しに、aにファイル名を入れて、getpath(a,0)してみたところ、
見事にファイル名の終わりの方がぶった切られていました。

というわけで、hsp3utfの不具合の可能性が高いと思われます。



ham

リンク

2020/1/30(Thu) 16:09:33|NO.89373

調べていただきありがとうございます!
hsp3utfに不具合がありそうな感じなのですね。

パスの長さの制約(?)について色々調べてみたものの結局よく分かりませんでしたが、
長いファイルパスでもOKなソフトとNGなソフトがあるという事だけ
試してみて分かりました。

残念ながら後者のようです...可能なら対応して欲しいです!
と要望を書いて一応解決としておきます。



ONION software Copyright 1997-2018(c) All rights reserved.