2011-03-28 7 views
0

좋아, 그래서 내 vba 코드를 통해 사용하는 이러한 기능이 있습니다. 아마도 vbs에서도 마찬가지 였을 것입니다. 여기 전체 ini 섹션을 읽고 배열에 넣으십시오.

내가 기본적으로 제가에서보고 싶은 한 다음 해당 섹션 내의 각 INI 문자열을 찾을만을 섹션을 지정할 수있는 기능을 만들려면이를 사용할 수 있습니다 어떻게 기능 (들)

'declarations for working with Ini files 
Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias _ 
"GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, _ 
ByVal nSize As Long, ByVal lpFileName As String) As Long 

Private 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 

'// INI CONTROLLING PROCEDURES 
'reads an Ini string 
Public Function ReadIni(Filename As String, Section As String, Key As String) As String 
Dim RetVal As String * 255, v As Long 
v = GetPrivateProfileString(Section, Key, "", RetVal, 255, Filename) 
ReadIni = Left(RetVal, v + 0) 
End Function 

'reads an Ini section 
Public Function ReadIniSection(Filename As String, Section As String) As String 
Dim RetVal As String * 255, v As Long 
v = GetPrivateProfileSection(Section, RetVal, 255, Filename) 
ReadIniSection = Left(RetVal, v + 0) 
End Function 

입니다 그것을 배열에 넣고 그 배열을 돌려서 루프를 만들 수 있습니까?

편집 : ReadIniSection은 거대한 문자열의 모든 키를 반환합니다. 의미, 나눌 필요가있어.

ReadIniSection은 다음과 같습니다 뭔가 반환 "Fornavn = FORNAVN [] Etternavn = ETTERNAVN을"등 등 [] 중간에 존재하지 브래킷, 그것은 사각형입니다. 아마 인식하지 못하는 문자 일 겁니다. 그래서 나는 a =와 square 사이의 값을 취하는 분할 명령을 실행해야한다고 생각합니다.

답변

2

이 도움이된다면 참조하십시오 - nullchar \ 0에 분할 :

Private Sub ListIniSectionLines() 
    Dim S As String: S = ReadIniSection("c:\windows\win.ini", "MAIL") 
    Dim vLines As Variant: vLines = Split(S, Chr$(0)) 
    Dim vLine As Variant 
    For Each vLine In vLines 
     Debug.Print vLine 
    Next vLine 
End Sub 
+0

좋아 보인다! 좋아, 고마워! :) –

관련 문제