GetPrivateProfilestring 이상
문제
나는 .NET의 Kernel32에서 GetPrivateProfilestring 및 GetPrivateProfilesection을 호출하는 데 땜질을했으며 이해하지 못하는 이상한 것을 발견했습니다.
이 ancantation부터 시작합시다.
Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringW" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString() As Char, _
ByVal nSize As Int32, _
ByVal lpFileName As String) As Int32
lpepplicationName (섹션), lpkeyname 및 lpdefault가 없으면 해당 섹션의 모든 키를 가져와야하며 실제로 50%의 시간을 가져와야합니다.
INI 파일에 첫 번째 줄에서 시작하는 lpapplicationName이있는 경우 버퍼는 아무것도 반환하지 않습니다. 파일의 두 번째 줄에 lpapplicationName 통계가 있으면 예상 값을 반환합니다.
처음에는 선언에서 W 버전과 유니 코드를 사용하는 것이 문제 였지만, 변경하는 것은 효과가없는 것 같습니다.
내가 무엇을 놓치고 있습니까?
해결책
열린 파일에 바이트 주문 마크 (텍스트 인코딩 유형을 표시하는 몇 바이트).
이 Windows API 호출은 바이트 주문 마크를 잡는 것처럼 보이지 않으며 첫 번째 섹션을 놓치게됩니다 (따라서 빈 줄이 있으면 모든 것이 잘 작동합니다).
다른 팁
좋은 전화. VS.NET에서 INI 파일을 편집하는 것은 물론 UTF-8 BOM을 추가하는 것입니다. grrr. 메모장으로 열고 Saveas ASCII를 수행하면 예상 결과가 생성됩니다.
너무 분명합니다. 그래서 둔각. 크래퍼 아래로 또 한 시간. :-)
감사! -= Chris
제휴하지 않습니다 StackOverflow