tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルiniファイル内のディレクトリパスの読込み
記事No2917
投稿日: 2006/01/17(Tue) 11:03
投稿者くまってぃ
[OSのVer]:WindowsXP    [VBのVer]:VB.NET2003

いつも参考にさせていただいております。

今回質問(?)させていただきたいことは、
INIファイル内に書かれているディレクトリパスを読込み
そのディレクトリパスを使用し、ファイルの読み書きする処理をしようと思っています。

それでINIファイル内のディレクトリパスをGetPrivateProfileString関数で読込む処理を
下記のように作成しました。

Dim cnt As Integer = 0

    'INIファイルのパス読み込み
    GetPrivateProfileString("section", "key", "", _
                             Buffer, 512, iniFilepath)

    'Bufferは指定されているサイズ分の情報を収集しているので
    'NULLまでの文字長を調べ、有効な情報のみを取得する。
    
    While (Buffer.Chars(cnt) <> vbNullChar) 、
                cnt = cnt + 1                      
    End While

    Buffer = Buffer.Substring(0, cnt)     '有効な情報部分のみ切り取り

上記で正常にディレクトリパスが取得できるのですが、

while文を使用してNULLまでの文字長を調べて、

その文字長部分だけ切り取る部分が

どうも何か他に方法があるような気がしてあまりしっくりきてません…^^;

何か他によい方法はありませんでしょうか?
お知恵を拝借できればありがたいです。よろしくお願いします^^
  

[ツリー表示へ]
タイトルRe: iniファイル内のディレクトリパスの読込み
記事No2918
投稿日: 2006/01/17(Tue) 11:12
投稿者
[String].Indexof()メソッドかなぁ…

[ツリー表示へ]
タイトルRe^2: iniファイル内のディレクトリパスの読込み
記事No2921
投稿日: 2006/01/17(Tue) 11:54
投稿者くまってぃ
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [String].Indexof()メソッドかなぁ…

も さん返信ありがとうございます。

このようなメソッドがあるのですね…自分もまだまだ調査不足ですね…
反省です^^;

処理は下記のようにしました

            'INIファイルのパス読み込み
            GetPrivateProfileString("section", "key", "", _
                                            Buffer, 512, iniFilepath)

            Buffer = Buffer.Substring(0,Buffer.IndexOf(vbNullChar))

以上です。

他にも方法はあるかもですが、だいぶしっくりしましたw

も さんありがとうございました〜^^

[ツリー表示へ]
タイトルRe^3: iniファイル内のディレクトリパスの読込み
記事No2922
投稿日: 2006/01/17(Tue) 12:59
投稿者花ちゃん
>             Buffer = Buffer.Substring(0,Buffer.IndexOf(vbNullChar))
> 他にも方法はあるかもですが、だいぶしっくりしましたw

Buffer = Buffer.TrimEnd(vbNullChar)  でもokですね。

[ツリー表示へ]
タイトルRe^4: iniファイル内のディレクトリパスの読込み
記事No2924
投稿日: 2006/01/17(Tue) 13:51
投稿者くまってぃ
> >             Buffer = Buffer.Substring(0,Buffer.IndexOf(vbNullChar))
> > 他にも方法はあるかもですが、だいぶしっくりしましたw
>
> Buffer = Buffer.TrimEnd(vbNullChar)  でもokですね。

花ちゃんさん返信ありがとうございます。

Trimは空白の削除の時ばかり、使用していたため
自分の中で「文字列の空白を削除」するものになっていました…^^;
文字を指定すればその文字の削除できるですよね…もう一回勉強ですね^^;

> Buffer = Buffer.TrimEnd(vbNullChar)

しかし上記を実施してみたところ、何故かNullが削除されませんでした。

ヘルプとかを見るかぎり、できそうな気もするのですが…
うーむ…TrimではNULLはサポートしてないでしょうか?

#気になってきたから調べよう…

[ツリー表示へ]
タイトルRe^5: iniファイル内のディレクトリパスの読込み
記事No2925
投稿日: 2006/01/17(Tue) 14:05
投稿者花ちゃん
> > Buffer = Buffer.TrimEnd(vbNullChar)
>
> しかし上記を実施してみたところ、何故かNullが削除されませんでした。

hhttp://www.bcap.co.jp/hanafusa/dotnet/sys05.htm
では、削除できておりますが?

Dim strBuffer As String = New String(CChar(vbNullChar), 256)
vbNullChar 以外が入っていませんか?

[ツリー表示へ]
タイトルRe^6: iniファイル内のディレクトリパスの読込み
記事No2926
投稿日: 2006/01/17(Tue) 14:20
投稿者くまってぃ
> Dim strBuffer As String = New String(CChar(vbNullChar), 256)
> vbNullChar 以外が入っていませんか?

返信ありがとうございます。

上記の部分にvbnullcharではなく空白が入っていました…^^;

nullを削除することができました…お騒がせしてすいませんでした。

これからもよろしくお願いします。

[ツリー表示へ]
タイトルRe^7: iniファイル内の...
記事No2934
投稿日: 2006/01/17(Tue) 20:12
投稿者じゃんぬねっと
参照先http://jeanne.wankuma.com/
これを使えばもっと楽です。
hhttp://jeanne.wankuma.com/library/inifile/

INI ファイル自体、.NET ではお勧めできませんけどね。

[ツリー表示へ]
タイトルRe^8: iniファイル内の...
記事No2946
投稿日: 2006/01/18(Wed) 16:04
投稿者くまってぃ
じゃんぬねっとさん、返信ありがとうございます。
参考にさせていただきます。

> INI ファイル自体、.NET ではお勧めできませんけどね。

.netではINIファイルではなく、XML推奨なんですよね…
これは今回の処理を作成する際に調査して、知っておりました。

が…が…エンドユーザーうんぬん&XML自体が何なのかわかっていない
ことがありまして、XMLは使用していませんでした^^;

じゃんぬねっとさんに教えてもらったものを見ながら
XMLについても勉強して理解していこうと思います。

ありがとうございました^^

[ツリー表示へ]
タイトルRe: iniファイル内のディレクトリパスの読込み
記事No2947
投稿日: 2006/01/18(Wed) 21:24
投稿者魔界の仮面弁士
>     GetPrivateProfileString("section", "key", "", _
>                              Buffer, 512, iniFilepath)
私は、String ではなく、StringBuilder で受けるようにしています。

> 何か他によい方法はありませんでしょうか?
良いかどうかは別として、StringBuilder で受けた場合は、
.ToString() の結果が、NULL 文字より前の文字列となるようで。

[ツリー表示へ]
タイトルRe^2: iniファイル内のディレクトリパスの読込み
記事No2951
投稿日: 2006/01/19(Thu) 10:27
投稿者くまってぃ
[OSのVer]:Windows    [VBのVer]:VB.NET  
> >     GetPrivateProfileString("section", "key", "", _
> >                              Buffer, 512, iniFilepath)
> 私は、String ではなく、StringBuilder で受けるようにしています。
>
> > 何か他によい方法はありませんでしょうか?
> 良いかどうかは別として、StringBuilder で受けた場合は、
> .ToString() の結果が、NULL 文字より前の文字列となるようで。

魔界の仮面弁士さん返信ありがとうございます。
StringBuilderですか…このような方法もあるのですね^^

いろんなアドバイスを頂きとても勉強させていただいております。
(知らないことだらけで、勉強不足を痛感していますが…^^;)
アドバイスありがとうございました。

[ツリー表示へ]