2012-03-13 3 views
3

내 ini 파일에 섹션이 없습니다. 다음 데이터가 있습니다섹션이없는 ini 파일을 읽으십니까?

 
com.ibm.rcp.toolbox.admin/toolboxvisibleChild=false 
com.ibm.collaboration.realtime.community/defaultAuthType=ST-DOMINO-SSO 
com.ibm.collaboration.realtime.brokerbridge/startBroker=false 
com.ibm.collaboration.realtime.webapi/startWebContainer=true 

기능을 사용하고 싶습니다.

[DllImport("kernel32")] 
    private static extern int GetPrivateProfileString(string section, 
      string key,string def, StringBuilder retVal, 
     int size,string filePath); 

내 문제

내가 해달라고 때문에 함수 섹션의 이름을 줄 수
    1. 어떤
    2. 내가 섹션 이름의 널 (null)을주는 경우에, 그것이 내가 싶지 않아 아무것도
    3. 을 반환 ReadAllText와 같은 무차별 대입을 사용하십시오.
  • +0

    당신이 섹션 이름 대신 널 위해 빈 문자열을 전달하면 어떻게됩니까? – Marcus

    +0

    공백 출력 :( – om471987

    +0

    GetPrivateProfileString이란 외부 라이브러리입니까? – MattDavey

    답변

    2

    Here's 저자가 section-les을 지원한다고 말하는 라이브러리 열쇠. 나 자신이이 라이브러리를 시도하지 않았다.
    또는 단순히 Ini 파일을 편집하고 상단에 "헤더"/ 섹션 이름을 추가 한 다음 읽을 수있게되면 삭제할 수 있습니다.

    +0

    고마워 ... 내가 시험해 보자 ... – om471987

    +1

    마지막으로, 내 결론은 sectionless ini는 win32에서 지원하지 않는다. 그래서 dtb에 의해 언급 된 filereader를 사용하는 것이 더 좋다 ... – om471987

    +0

    그 라이브러리의 코드는 매우 못생긴다 –

    3

    File.ReadLines를 사용하여 일부 LINQ 실제로 그렇게 나쁜되지 않습니다 :

    var dict = File.ReadLines("config.txt") 
           .Where(line => !string.IsNullOrWhiteSpace(line)) 
           .Select(line => line.Split(new char[] { '=' }, 2, 0)) 
           .ToDictionary(parts => parts[0], parts => parts[1]); 
    
    var result = dict["com.ibm.rcp.toolbox.admin/toolboxvisibleChild"]; 
    
    +0

    Ok Thanks .. 나는 마이크로 소프트에 의해 기능을 사용할 수없는 것처럼 보이지만 직접 파일 판독기 – om471987

    +0

    '.Where (line =>! line.Trim(). StartsWith (";"))' – TaW

    관련 문제