- ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
38 :デフォルトの名無しさん (ワッチョイ d919-hgF0)[sage]:2016/10/11(火) 17:06:07.06 ID:yDjM8vhd0 - >>35
sfがstringであることぐらいは質問文の中に欲しいなー stringに対して [index] でアクセスするとchar型、つまりUTF-16の文字コードが取得できる それぞれの文字コードが指す文字は 13: CR(=\r)つまり改行文字 32: (いわゆる半角の)空白文字 CRが見つかるまでループしてるのはコメント通り1行分を読み込んでるから 空白文字の方はちょっと特殊だけど、文字コード0〜31は制御コードって言う 「文字ならざるもの」を入れておく領域になっているんで、 つまり文字として有効かどうかをチェックしてる
| - ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©2ch.net
40 :デフォルトの名無しさん (ワッチョイ d919-hgF0)[sage]:2016/10/11(火) 17:47:59.14 ID:yDjM8vhd0 - >>36
pinvoke.netのDllImport定義使ってる? なんでかFindFirstUrlCacheEntryだけEntryPoint書いてるけどなぜかそれが FindFirstUrlCacheEntryAを明示してるからそっちはANSIでNextのほうはUnicode呼び出しになる EntryPoint消して、stringへの変換はMarshal.PtrToStringAuto使うようにする あとFindNextUrlCacheEntryは返値見て失敗したらMarshal.GetLastError呼び出し バッファ不足か列挙終了か確認する必要がある そもそも最初に呼び出したFindFirstUrlCacheEntryで得られたバッファサイズはFindNextUrlCacheEntryでさらに拡張される可能性があるし もし拡張されたらまたFindFirstUrlCacheEntryから呼び出し直しだから はじめっから65536とか適当に大きいバッファ確保しておいて FindNextUrlCacheEntryに渡すbufferSizeは毎回入れ直しておいた方がいい
|
|