vb5から
c#.net 2003に切り替えようとおもっています
c#を使い始めて2日目です よろしくお願いします。
以前vb5開発時にiniファイルを作り
[セッション名]
db=aaa
pass=bbb
からaaaとbbbという文字列を取得していましたが
c#でiniファイルから文字を取り出す方法があるのでしょうか?
ご存知の方よろしくお願いします。
パソコン環境
os winXP(PRO)
言語 c#.net 2003
>c#でiniファイルから文字を取り出す方法があるのでしょうか?
標準クラスライブラリではサポートされていません。
.NET にあらかじめ用意されている機能で代替するか、.ini 関連の API を P/invoke で
呼び出すか、のどちらかを選択することになります。
渋木宏明(ひどり)さん返信ありがとうございます。
.NET にあらかじめ用意されている機能で代替するか、.ini 関連の API を P/invoke で
呼び出すか、のどちらかを選択することになります。
と書いてありますが、初心者なもので
どのようにしたらよいのかわかりません。
何かコードのサンプルなどをお持ちでしたら
おしえていただけませんでしょうか?
すいませんよろしくお願いします。
>何かコードのサンプルなどをお持ちでしたら
>おしえていただけませんでしょうか?
まず、どっちの方法論を採用するか選択してください。
.ini 関連の API を P/Invoke する場合、VB で言う Declare 宣言と同じようなことを
することになります。VB5 で .ini ファイルはどうやって作成しましたか?
.NET にあらかじめ用意されている機能で代替する場合、DB を使う、レジストリを使
う、など様々な方法があるので、さらに目的に応じて適切な方法を選択することになり
ます。
渋木宏明(ひどり)さんたびたびすいません
.ini 関連の API を P/Invoke する方法でお願いします。
vb5 での.iniなんですが
[セッション名]
db=aaa
userid=bbb
passcd=ccc
というかんじであらかじめメモちょうで作成していました。
セッション名にたいしてaaaやbbbやcccという値を参照していました。
何度もすいませんがご指導よろしくお願いいたします。
>セッション名にたいしてaaaやbbbやcccという値を参照していました。
ですからー、それって「どうやって」実現してましたか? (^^;
VB5 って、.ini ファイルを読み込む機能を持ってましたっけ?
VB5 が標準で .ini ファイルを読み込む機能を持っていなくて、それを Declare を使っ
て補っているなら、以降の説明を「それなりに」分かりやすいようにできると思ってお
尋ねしているのです。
渋木宏明(ひどり)さんすいません
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というデータが入るようになっていました。
よろしくおねがいします。
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が何のことなのかさっぱり分かっていません^^;)
>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
配下で解説されていますので、参考にしてください。
t2さん
渋木宏明(ひどり)さん
返信ありがとうございました。
さっそくためしてみます。