WindowsのPath取得

結論:つらみ
3
🌸桜花🌸 @rofi

@overthestardust @haxe やっぱりエラーになるんですね  じゃあ少なくとも出力にMAX_PATH以上のバッファが確保されてれば変な挙動される心配はないんですね

2014-03-05 15:35:53
はぇ~ @haxe

@rofi @overthestardust あーあー、出力先バッファも呼び出し側が用意するバージョンなのね。

2014-03-05 15:37:55
Yosuke HASEGAWA @hasegawayosuke

@rofi @a4lg Shell Lightweight 系のAPI、なぜかMAX_PATH制限あるのが多いです。これはAPIの制限であってファイルシステムとしてはもっと長い。http://t.co/cthewEGmWG

2014-03-05 15:39:02
UNAGI𝕏 @unagix

MAX_PATH は Ansi 用だ。Unicode なおまえらには特殊表現用意したから 3 万文字使えるぜ!どうだ嬉しいだろ HAHAHA!。Ansi API に渡るにゃどうするかって?8.3 形式にでもすれば?シランケド。まで読んだ。

2014-03-05 15:44:46
🌸桜花🌸 @rofi

@hasegawayosuke @a4lg Windowsってファイルパスの制約が多いので自分で組むよりかはシステムが提供してくれてる関数使った方が安全かなとか思ってShell Lightweight系のAPIを使おうとしてたのです  うーん・・・

2014-03-05 15:49:24
星くず彼方に @overthestardust

@rofi そのはずです。たぶん。もちろんエラーチェックはちゃんとする必要はありますが。 PAthCch系がもっと早くVistaで実装されてればよかったのになぁ…

2014-03-05 15:50:49
Tsukasa #01 @a4lg

@rofi 少なくとも shell 系の API は制限キツすぎワロタ的なモノが結構あるので場合によってはオススメしづらいです。

2014-03-05 15:51:14
🌸桜花🌸 @rofi

http://t.co/CcRsaSYpK8  完全な命名規則書いてあるけど…これ全部読んで自力で実装するのもなぁ・・・ふぇぇ

2014-03-05 15:52:13
🌸桜花🌸 @rofi

@overthestardust ですよねー、どうして今のいままで放置されてたのか… >PathCch系

2014-03-05 15:52:53
🌸桜花🌸 @rofi

@a4lg うぅぅ・・・でも代替関数がないんですよねー  やっぱり仕様読んで実装するのが一番なのですかねぇ。。。

2014-03-05 15:53:41
Tsukasa #01 @a4lg

@rofi ただシェル系の API は副作用というかなんというか、MAX_PATH 長の文字列にすべて制限する関係上、シェル API でちゃんと扱えてるならだいたい Windows エクスプローラから扱えるファイルができるので、まぁ……時と場合により。

2014-03-05 15:54:52
Tsukasa #01 @a4lg

oO( Win32 API で扱えているファイルが Windows エクスプローラでちゃんと扱える保証は、残念ながらない。というか、長い (エクスプローラから削除できない) フォルダ名を普通に Windows システムが作ってくる。シェル制限は結構厳しい。 )

2014-03-05 15:56:25
Yosuke HASEGAWA @hasegawayosuke

@rofi @a4lg 引数を \ で分解して要素ごとに Shell Lightweight APIに渡す。

2014-03-05 15:57:09
Tsukasa #01 @a4lg

@hasegawayosuke なるほどその手があったか(ぇ

2014-03-05 15:57:32
Yosuke HASEGAWA @hasegawayosuke

@a4lg PathMatchSpec とか自分で実装したくないので、それ実際にやってます。

2014-03-05 15:59:21
UNAGI𝕏 @unagix

MAX_PATH でパス長切ってくるバックアップシステムとかコケたりする闇とかある。

2014-03-05 16:01:50
🌸桜花🌸 @rofi

結論:やっぱりWinのファイルパスは面倒(

2014-03-05 16:02:06
🌸桜花🌸 @rofi

CONCON問題もあるしなー  でもうまいことやればCONってファイルも作れるしほげほげ・・・

2014-03-05 16:02:48