iniファイルの読み込み

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
超初心者

iniファイルの読み込み

#1 投稿記事 by 超初心者 »

見よう見まねで書いたのですが、iniファイルの読み込みがうまくいきませ。

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Const SIZE = 250
Dim Ack[SIZE] As Byte
GetPrivateProfileString("drivers"+NULL, "wave"+NULL,"Nashi"+NULL, Ack, SIZE, "system.ini"+NULL)

FormatMessageで見ると、”アクセスが拒否されました”とでます。
なぜでしょうか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

読み込み方に関してはよく分かりませんが、ダブルクォーツで囲った文字列の最後には自動でNULL文字が付くので、
GetPrivateProfileString("drivers", "wave","Nashi", Ack, SIZE, "system.ini")
で大丈夫だと思います。


そういえば、iniファイルを操作するクラスを誰かが作っていたような・・・?思い違いかな。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: iniファイルの読み込み

#3 投稿記事 by 7 »

> GetPrivateProfileString("drivers"+NULL, "wave"+NULL,"Nashi"+NULL, Ack, SIZE, "system.ini"+NULL)
NULLは要りません。 WritePrivateProfileString()関数でなんか失敗するなぁ...と思ったらどうやら system.ini っていうINIファイルは作れないようです?。
読み込むことはできますけどね。
超初心者

Re: iniファイルの読み込み

#4 投稿記事 by 超初心者 »

konisi様、7様

NULLは、取ったり付けたりしながら試しました。
7様のサンプルの様にStringをLPSTRにしたらAPIは反応しました。

しかし、system.iniには、下記の記載が有るのにNasiが帰って来ます。

[drivers]
wave=mmdrv.dll

system.iniをプロジェクトが有るフォルダーにコピーしても同様です。
何故でしょう??

もう1つ教えて下さい。
LPSTRって、ABのHelpに掲載されていない型です。
Helpに無い形式は何から情報を得るのですか??

よろしくお願いします。
超初心者

Re: iniファイルの読み込み

#5 投稿記事 by 超初心者 »

> しかし、system.iniには、下記の記載が有るのにNasiが帰って来ます。

iniファイルを本来使用するファイルに変更したら取れました。
お騒がせいたしました。
原因は?ですが、Windowsをいじくるつもりは無いので、大丈夫です。

> もう1つ教えて下さい。
> LPSTRって、ABのHelpに掲載されていない型です。
> Helpに無い形式は何から情報を得るのですか??

こちらは、引き続き情報募集中です。
宜しくお願いします。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#6 投稿記事 by イグトランス »

LPSTRとLPCSTRはABのBytePtrとほぼ同義です。
TypeDefで作ってやれば良いでしょう。
この2つはどちらもC/C++でWindows APIに用いられている型名です。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: iniファイルの読み込み

#7 投稿記事 by 7 »

> LPSTRって、ABのHelpに掲載されていない型です。
> Helpに無い形式は何から情報を得るのですか??
ActiveBasicをインストールしたフォルダの中の Include\windows.sbp で定義されています。
そういうのを覗いて調べるとか、自分の場合は文字列検索アプリケーション(Grep検索?って言うのかな?)でActiveBasicのIncludeフォルダの中の全てのファイルに対して「LPSTR」って検索したら発見したという。

ちなみにABHelperにはLPSTRの解説を載せています。宣伝。

自分の場合、LPSTRは文字列バッファ、LPCSTRは文字列リテラルと考えてしまっているんですけど、これを書き分けると文字列バッファを指定すべきなのか、文字列リテラルを指定してもいいのか、すぐに分かって便利です。
返信する