iniファイルの参照方法について – プログラミング – Home

iniファイルの参照方法について
 
通知
すべてクリア

[解決済] iniファイルの参照方法について


sa
 sa
(@sa)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

vb5から
c#.net 2003に切り替えようとおもっています
c#を使い始めて2日目です よろしくお願いします。
以前vb5開発時にiniファイルを作り
[セッション名]
db=aaa
pass=bbb
からaaaとbbbという文字列を取得していましたが
c#でiniファイルから文字を取り出す方法があるのでしょうか?
ご存知の方よろしくお願いします。

パソコン環境
os winXP(PRO)
言語 c#.net 2003


引用未解決
トピックタグ
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>c#でiniファイルから文字を取り出す方法があるのでしょうか?

標準クラスライブラリではサポートされていません。

.NET にあらかじめ用意されている機能で代替するか、.ini 関連の API を P/invoke で
呼び出すか、のどちらかを選択することになります。


返信引用
sa
 sa
(@sa)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

渋木宏明(ひどり)さん返信ありがとうございます。

.NET にあらかじめ用意されている機能で代替するか、.ini 関連の API を P/invoke で
呼び出すか、のどちらかを選択することになります。

と書いてありますが、初心者なもので
どのようにしたらよいのかわかりません。
何かコードのサンプルなどをお持ちでしたら
おしえていただけませんでしょうか?

すいませんよろしくお願いします。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>何かコードのサンプルなどをお持ちでしたら
>おしえていただけませんでしょうか?

まず、どっちの方法論を採用するか選択してください。

.ini 関連の API を P/Invoke する場合、VB で言う Declare 宣言と同じようなことを
することになります。VB5 で .ini ファイルはどうやって作成しましたか?

.NET にあらかじめ用意されている機能で代替する場合、DB を使う、レジストリを使
う、など様々な方法があるので、さらに目的に応じて適切な方法を選択することになり
ます。


返信引用
sa
 sa
(@sa)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

渋木宏明(ひどり)さんたびたびすいません

.ini 関連の API を P/Invoke する方法でお願いします。
vb5 での.iniなんですが
[セッション名]
db=aaa
userid=bbb
passcd=ccc
というかんじであらかじめメモちょうで作成していました。
セッション名にたいしてaaaやbbbやcccという値を参照していました。

何度もすいませんがご指導よろしくお願いいたします。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>セッション名にたいしてaaaやbbbやcccという値を参照していました。

ですからー、それって「どうやって」実現してましたか? (^^;

VB5 って、.ini ファイルを読み込む機能を持ってましたっけ?

VB5 が標準で .ini ファイルを読み込む機能を持っていなくて、それを Declare を使っ
て補っているなら、以降の説明を「それなりに」分かりやすいようにできると思ってお
尋ねしているのです。


返信引用
sa
 sa
(@sa)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

渋木宏明(ひどり)さんすいません

iniファイルのvb5での参照方法ですが
APIを
Declare Function GetPrivateProfileString Lib kernel32
Alias GetPrivateProfileStringA (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String,
ByVal nSize As Long, ByVal lpFileName As String) As Long

をDeclareで宣言して参照時には
dim Var as string * 512
dim DB_NAME as string

LENGTH = GetPrivateProfileString(セッション名, DB, ", Var, 100, iniファ
イルのパス)
DB_NAME = Mid$(Var, 1, InStr(Var, Chr(0)) - 1)
 DB_NAMEにはaaaというデータが入るようになっていました。
よろしくおねがいします。


返信引用
t2
 t2
(@t2)
ゲスト
結合: 21年前
投稿: 16
 

C#初めて数ヶ月です。
少し前に私もAPIを使用する必要があったので、その時調べた結果です。
マイクロソフトが提供しているサンプルで行っていた方法です
「DllImport」を使用してAPIを呼び出しています。
参考になれば幸いです。

例)
[DllImport(kernel32.dll, SetLastError=true)]
public static extern IntPtr CreateFile( String lpFileName,
UInt32 dwDesiredAccess,
UInt32 dwShareMode,
IntPtr lpSecurityAttributes,
UInt32 dwCreationDisposition,
UInt32 dwFlagsAndAttributes,
IntPtr hTemplateFile );

#渋木宏明(ひどり)さんのおっしゃった「API を P/Invoke する」方法ってこのこと
#なんでしょうか?(実はInvokeが何のことなのかさっぱり分かっていません^^;)


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>iniファイルのvb5での参照方法ですが

やはり Declare を使ってますよね。

VB5 とは文法が異なりますが、C# でも基本的にやるべきことは同じです。

DllImport 属性付でクラスメソッドを宣言し、API を呼び出します。(.NET Framework
から API を呼び出す技術のことを P/Invoke と呼びます)

GetPrivateProfileInt() は

[DllImport(Kernel32.dll)]
public static extern uint GetPrivateProfileInt
(
string lpAppName, // セクション名
string lpKeyName, // キー名
int nDefault, // キー名が見つからなかった場合に返すべき値
string lpFileName // .ini ファイルの名前
);

のような感じになります。

P/Invoke については、

http://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/cpguide/html/cpconconsumingunmanageddllfunctions.asp

配下で解説されていますので、参考にしてください。


返信引用
sa
 sa
(@sa)
ゲスト
結合: 21年前
投稿: 9
Topic starter  

t2さん
渋木宏明(ひどり)さん

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

さっそくためしてみます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました