iniファイルの読み込み

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: iniファイルの読み込み

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

by 7 » 2006年7月04日(火) 21:08

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

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

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

by イグトランス » 2006年7月04日(火) 19:31

LPSTRとLPCSTRはABのBytePtrとほぼ同義です。
TypeDefで作ってやれば良いでしょう。
この2つはどちらもC/C++でWindows APIに用いられている型名です。

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

by 超初心者 » 2006年7月04日(火) 19:14

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

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

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

こちらは、引き続き情報募集中です。
宜しくお願いします。

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

by 超初心者 » 2006年7月04日(火) 19:06

konisi様、7様

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

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

[drivers]
wave=mmdrv.dll

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

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

よろしくお願いします。

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

by 7 » 2006年7月04日(火) 17:56

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

by konisi » 2006年7月04日(火) 17:49

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


そういえば、iniファイルを操作するクラスを誰かが作っていたような・・・?思い違いかな。

iniファイルの読み込み

by 超初心者 » 2006年7月04日(火) 17:04

見よう見まねで書いたのですが、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で見ると、”アクセスが拒否されました”とでます。
なぜでしょうか?

ページトップ