getprivateprofilestring 예제

이 클래스는 특별히 잘 설계된 클래스가 아닙니다. 나는 그것을 빨리 썼다. 그것은 적당히 어려운 interop의 예로 여기에 게시됩니다; 특히 “다중 문자열”은 이중 null-종료되고 포함된(단일) null을 포함할 수 있는 단일 버퍼를 의미하는 다중 문자열 값을 읽는 방법입니다. 대부분의 .NET 응용 프로그램은 이전 INI 파일 형식에 액세스할 필요가 없으므로 Microsoft는 .NET 프레임워크에 포함하지 않기로 결정했습니다. .config 파일부터 레지스트리에 이르기까지 여러 가지 다른 옵션을 사용할 수 있습니다. 그러나 이전 INI 파일을 읽어야 하는 몇 가지 상황이 있습니다. ImportsSystem.Runtime.InteropServices 가져오기 시스템.Text Module1 개인 선언 자동 함수 GetPrivateProfileString Lib “kernel32” (문자열로 ByVal lpAppName, _ 문자열로 byVal lpKeyName, _ byVal lpDefault 문자열로_ byVal lpReturnedString StringBuilder, _ ByVal nSize as 정수, _ByVal lpFileName 문자열로) 정수 하위 Main() 디에이션 스탭 SB = 새 StringBuilder(500) res = GetPrivateProfileString(“앱이름”, “키네임”, “”” sb, sb, sb)로 희미한 리 용량, “c:test.ini”) Console.WriteLine(“GetPrivateProfileStirng 반환: ” 및 res. ToString()) 콘솔.WriteLine(“키 이름은 : ” 및 sb입니다. ToString()) 끝 서브 엔드 모듈 lpFileName에 의해 지정된 초기화 파일이 없거나 잘못된 값을 포함하는 경우이 함수는 `0x2`(파일을 찾을 수 없음)의 값으로 errorno를 설정합니다. 확장 오류 정보를 검색하려면 GetLastError를 호출합니다. 시스템 사용; System.Runtime.InteropServices를 사용 하 여; System.Text 사용; 네임 스페이스 GPPS { 클래스 클래스1 { 정적 보이드 메인 (문자열[] args) { StringBuilder sb = 새로운 StringBuilder (500); uint res = GetPrivateProfileString (“앱 이름”, “KeyName”, “KeyName”), “””, sb, (uint) sb. 용량, @”c:test.ini”); 콘솔.쓰기 라인(sb. 토스트링(); } [DllImport(“kernel32.dll”)] 정적 외피 uint GetPrivateProfileString (문자열 lpAppName, 문자열 lpKeyName, 문자열 lpDefault, 문자열 빌더 lpReturnedString, int nSize, 문자열 lpFileName); } } 이 매개 변수가 NULL이면 기본값은 빈 문자열 “”입니다.

StringBuilder.Capacity to uint의 캐스팅을 피하기 위해 ini2reg 스타일 프로그램(프로그램)에서 일부 테스트 개발을 수행하는 동안 이 클래스를 작성한 http://www.codeproject.com/KB/files/INI_File_Enumerator.aspx int. int. 기존 INI 파일을 읽은 다음 적절한 레지스트리 항목을 작성하여 정보가 레지스트리에서 읽도록 합니다. MSDN: GetPrivateProfileString, MSDN: INF Ini2Reg 및 MSDN: NT 리소스 키트, 장 26)을 참조하십시오. 위의 C# 샘플 코드는 섹션 이름 또는 키 이름을 검색하는 데 작동하지 않습니다. 문제는 지정되지 않은 매개 변수에 대해 null이 아닌 0을 전달해야 한다는 것입니다. 다음은 잘 관리되는 API입니다: GetPrivateProfileString 함수는 lpAppName 매개 변수에서 지정한 섹션 제목 아래의 lpKeyName 매개 변수에서 지정된 이름과 일치하는 키에 대해 지정된 초기화 파일을 검색합니다. 키를 찾으면 함수는 해당 문자열을 버퍼에 복사합니다. 키가 없는 경우 함수는 lpDefault 매개 변수에 의해 지정된 기본 문자열을 복사합니다. 초기화 파일의 섹션에는 다음 양식이 있어야 합니다. F.e. lpDefault를 빈 문자열(“” 또는 vbNullString 또는 Nothing)으로 정의하는 경우 반환된 값이 실제로 누락된 키의 기호인지 아니면 읽기 값인지 알 수 없습니다.

f.e. vbNullChar를 통과하면 값이 빈 문자열인 경우 빈 문자열이 되고 키가 없는 경우 vbNullChar(모두 0자 읽기)가 제공됩니다. null lpAppName 또는 null lpKeyName을 전달 하여 모든 키 이름을 전달 하여 모든 섹션 이름을 얻어야 하는 경우 GetPrivateProfileSection에 대해 표시되는 것과 같은 기술을 사용하여 이중 null 종료 결과를 처리해야 합니다.

Posted in Uncategorized