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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0914
にゃんちゃんHSPでファイラーは作れないのか5未解決


にゃんちゃん

リンク

2015/9/14(Mon) 16:23:38|NO.71664

こんにちは。
HSPでファイラーの作成を計画しているのですが、重大な問題があって着手できずにいます。
通常、フォルダやファイルの一覧はdirlistやdirlist2で取得できると思いますが、こちらで実験したところ、既存の命令がANSIで表記できないUnicode文字列に非対応で、該当ファイルにアクセスできないことを確認しています。
dirlistおよびdirlist2で取得→結果をファイル出力→メモ帳で確認…クエッションマークに化ける
Explorerから該当ファイル名をコピーしてメモ帳に貼り付ける…正常に表示
以上の結果から、出力の時点で文字が化けているのは明らかだと思います。
COMオブジェクトを使って一覧を取得することも考えましたが、それができたとしても、表示部分やファイル操作時に文字化けが起きて、結局のところファイラーとしての目的は達成できません。
Unicode文字列の表示に対応していない現在のHSPで、ファイラーを作ることは不可能なのでしょうか?
よろしくおねがいします。



この記事に返信する


kanamaru

リンク

2015/9/14(Mon) 16:45:57|NO.71666

探してみたら、
http://www.hsp.tv/play//pforum.php?mode=pastwch&num=13777
というスレッドを見つけました。使えないでしょうか?



cats

リンク

2015/9/14(Mon) 21:42:21|NO.71680

メモ帳は標準でUnicode判別をしないので、開いたときに文字化けするのは、正しくファイル名が保存されていると思います。
一度バイナリエディタで中身を確認してUnicodeかを調べると手っ取り早いです。
UTF-16だったかとShift-JISの変換はcnvstowとcnvwtosで行えます。
これで日本語などには対応できるのですが、特殊記号や外国の文字なども正常に処理したい場合はUnicodeのまま処理することをおすすめします。
その場合は、ファイル入出力の際はとくに文字コードに注意する必要があります。



toto

リンク

2015/9/15(Tue) 02:05:07|NO.71698

>Unicode文字列の表示に対応していない現在のHSPで、ファイラーを作ることは不可能なのでしょうか?
不可能ではないですが激しく手間がかかります。
シフトJISにない文字を扱う必要から、文字列関係の処理をすべてUnicodeに対応したAPIで
置き換えて処理する必要があるので。
そのほかの方法としては、内部ではファイル名を8+3の短いファイル名で保持して、表示部分だけを
UNICODEで処理する方法もありますが、最近のOSでは標準で短いファイル名を付けない設定に
なってることが多いのでその場合は通用しないです。



SOU1

リンク

2015/9/15(Tue) 13:00:35|NO.71703

かなり動く段階まで作っていましたが途中でC#(wpf/xaml)に乗り換えました。
理由はtotoさんの指摘通りでHSPだけでUnicodeを扱うのは
「不可能ではない」レベルでしかありません。本当にしんどいと思います。
COMを利用する事で実在するドライブ以外の名前空間にもアクセス出来るのは大きなメリットですが、
それでもUnicodeを扱う努力をするくらいであれば別の言語のほうが楽そうです。

とはいえwin32apiを利用出来る程度のスキルがあれば
bass.dll等を利用して音楽再生を行ったり、susie pluginでの画像表示なども可能ですので
まるで出来ないわけでもないです。割と作るのは楽しかったです。



にゃんちゃん

リンク

2015/9/15(Tue) 14:07:24|NO.71704

ご回答ありがとうございます。
>>kanamaruさん
過去ログの提示ありがとうございます。これを使えば、とりあえず表示は何とかなりそうです。
ただ、HSP内部のエンコーディングがSJISであるという事実は大きく、ファイル操作や出力時など、文字化けしないように気を使ってプログラムを書かなければならないというのは、なかなかしんどそうです。

>>catsさん
ファイルを開いた時点で、メモ帳側が文字コードを誤認している可能性もあるんですね。そうすると、もしかしたらdirlistの段階では、正しいファイル名がゲットできてるのかもしれません。一度確認してみます。

>>totoさん
たしか、HSPのUnicode対応モジュール的なものがどこかにあったように記憶しているので、それを使えば比較的簡単に(もちろん他言語でやるよりはおそろしく手間でしょうが)いけるかもしれないです。気を使いながらコーディングするのは変わらないのですがw

>>SOU1さん
使い慣れたHSPでやるか、ちょっとかじれば使えそうな他言語でやるか迷います。ほんとは、各種APIとの連携はもちろん、マルチスレッドのファイル操作、シェル拡張などいろいろやりたかったのですが、かなりの重労働になりそうだということが分かりました。



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