통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
데브피아 C# 포럼 마을에 오신 것을 환영합니다.
  마을등급 C#   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 비사모 주민 12902 since 2006-12-28
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
[마을 게시판]
구인/구직 게시판
건의 / 운영 제안
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 ini 항목 읽어오기(고수님들 도움부탁드립니다.)  | WinForm Program 2020-03-25 오후 3:37:39
 jjchoi97  jjchoi97님께 메시지 보내기jjchoi97님을 내 주소록에 추가합니다.jjchoi97님의 개인게시판 가기 번호: 180001 추천:0  / 읽음:51

C++만  하다가 처음으로 C#을 시작했습니다. 저의 첫 C# 프로그래밍입니다.

툴은 Visual Studio 2013버젼입니다.

 

외부 ini 접근해서 항목을 읽어오려하는데, 아래처럼 코딩했는데,

컴파일에는 문제가 없는데, 읽어오는 내용이 항상 null입니다.

파일의 존재(Exists로..)는 확인했는데, GetPrivateProfileString의 리턴값이 항상 0 입니다.

setup.ini의 파일의 내용까지 첨부합니다.

 

아무리봐도 오류를 못찾겠습니다. ㅜㅜ

 

고수님들! 도와주세요~~

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;

namespace HAW_Vision
{

    public partial class Setup : Form
    {
         [DllImport("kernel32.dll")]
        public static extern int GetPrivateProfileString(string lpAppNAme,
             string lpKeyName,
             string lpDefault,
             StringBuilder lpReturnedString,
             int isize,
             string lpFileName);
        [DllImport("Kernel32.dll")]
         public static extern int WritePrivateProfileString(string lpAppNAme,
            string lpKeyName,
            string value,
            string lpFileName);
 

        public Setup()
        {
            InitializeComponent();

            LoadSetup();
        }


        public void LoadSetup()
        {
            String section = "Setup";
            String key = "NbItem";

            String strFilePath = "C:\\Setup\\Setup.ini";

 

            //파일 있는지 확인 있을때(true), 없으면(false)

            FileInfo fileInfo = new FileInfo(strFilePath);

            if (!fileInfo.Exists)
                return;

            // <<<<<<<<<<<<<<<< 여기까지는 문제 없구요.

 

            // Reading
            string strRet = ReadIniParameter(section, key, strFilePath);
            int iSetupNbItem = int.Parse(strRet);

           << strRet값이 ""이라서 이 라인에서 에러 발생

            MessageBox.Show(strRet);

        }

 

        private string ReadIniParameter(string section, string key, string iniFile)
        {
            StringBuilder sb = new StringBuilder(500);
            int ret = GetPrivateProfileString("Setup", "NbItem", "", sb, 500, @"C:\Setup\Setup.ini");

  

             <<<< 여기서 항상 ret값이 0 입니다. sb값도 ""이구요.

              //// 계속 안되서 답답하길래 바로 string을 넣은 거구요. 파라미터 받아서 변수로도 해봤는데 동일합니다.


            return sb.ToString().Trim();
        }
        private void WriteIniParameter(string section, string key, string value, string iniFile)
        {
            WritePrivateProfileString(section, key, value, iniFile);           
        }
    }
}

 

 

 

 

 

Setup.ini 파일의 내부 내용입니다.

 

[Setup] 
NbItem=27   <<< 이부분 읽어오는 시점부터 걸리네요. ㅠㅠ

// Data for Initialzing Program
// Path
PATH_SETUP=C:\\Setup\\
PATH_LOCALSPEC=D:\\LocalSpec\\
PATH_DEBUG=D:\\Debug\\
PATH_DATA=D:\\Data\\
PATH_IMAGE=D:\\Data\\Image\\
PATH_Result=D:\\Result\\
PATH_LOG=D:\\Log\\

이 글에 답변 등록하기
 [답변]참고해보세요. 2020-03-25 오후 4:18:43
칡흙 번호: 180006 추천:0  

 

- MSDN 에서. 인자값 / 리턴값 / 오류값 / GetLastError() 확인

- 언어 설정 확인

EUC-KR / UTF-8 / UNICODE 확인

- 띄우기 간격 확인

- 잘 되는거 확인

 

 

//

Search - CodeProject
http://www.codeproject.com/search.aspx?q=GetPrivateProfileString+c%23&doctypeid=1%3b2%3b3%3b13

C# 프로그래밍 검색결과, 책 검색 : 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=pre&where=nexearch&query=C%23+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

GetPrivateProfileString c# - Google 검색
http://www.google.com/search?source=hp&ei=KwR7XubMIozN-QaXn6DIDA&q=GetPrivateProfileString+c%23&oq=GetPrivateProfileString+c%23&gs_l=psy-ab.3..0j0i30l8j0i5i30.1476.1476..2227...0.0..0.208.208.2-1......0....2j1..gws-wiz.6cQPMrWGNyY&ved=0ahUKEwimjoejibXoAhWMZt4KHZcPCMkQ4dUDCAY&uact=5

C# ini파일에 데이터 읽기, 쓰기 :: Let me dream.
http://miss-flower31.tistory.com/entry/C-ini%ED%8C%8C%EC%9D%BC%EC%97%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9D%BD%EA%B8%B0-%EC%93%B0%EA%B8%B0

ABLE :: [C#] ini 파일 모든 섹션 & 키 값 읽기
http://able1.tistory.com/2

명월 일지 :: [C#] ini 환경 설정 파일을 다루는 방법
http://nowonbun.tistory.com/493

C# / ini 파일 읽기 및 쓰기: kernel32 사용하지 않고
http://wookoa.tistory.com/417

C# .NET 자료실 - ini 다루기 - 하나의 섹션 이용하기
http://whiteat.com/WhiteAT_Csharp/31905

알렉스의 상상력 공장 :: C# :: ini파일 읽고 쓰기(ini 연동)
http://ksyjkh24.tistory.com/191

독서하는 초보 개발자 :: C# ini 파일 이용하기
http://dodo1054.tistory.com/65

[C#] ini 파일 읽고 쓰기
http://terrorjang.tistory.com/21

C# ini File Read/Write (UTF-8) :: Arin's Blog
http://tindevil.tistory.com/639

pinvoke.net: getprivateprofilestring (kernel32)
http://www.pinvoke.net/default.aspx/kernel32.getprivateprofilestring

까망이의 개발자 마을 :: [ini] ini파일 읽기 쓰기 기본 코드
http://blackhunydev.tistory.com/79

c# - Read all ini file values with GetPrivateProfileString - Stack Overflow
http://stackoverflow.com/questions/7090053/read-all-ini-file-values-with-getprivateprofilestring

c# - GetPrivateProfileString not working .NET - Stack Overflow
http://stackoverflow.com/questions/17469379/getprivateprofilestring-not-working-net

보금자리 :: C# ] INI 파일
http://phiru.tistory.com/339

[C#] INI 읽고/쓰기
http://overit.tistory.com/entry/C-INI-%EC%9D%BD%EA%B3%A0%EC%93%B0%EA%B8%B0

[phil-story] Always Fighting :: C#에서 INI 파일 사용하기 - GetPrivateProfileString, WritePrivateProfileString
http://notgivuphil.tistory.com/358

C#에서 INI 파일 다루기 :: Game Programmer Life
http://kindtis.tistory.com/180

[C# / 환경설정파일] INI파일 사용법 : 네이버 블로그
http://m.blog.naver.com/PostView.nhn?blogId=qazws1565&logNo=220730706818&proxyReferer=https%3A%2F%2Fwww.google.com%2F

[C#] WritePrivateProfileString, GetPrivateProfileString in C#
http://withsoju.tistory.com/312

GetPrivateProfileString function (winbase.h) - Win32 apps | Microsoft Docs
http://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofilestring

 

 

 

이 글에 답변 등록하기
 [답변]Setup.ini 인코딩을 확인해보세요 2020-03-25 오후 4:44:40
 hyokkyu  hyokkyu님께 메시지 보내기hyokkyu님을 내 주소록에 추가합니다.hyokkyu님의 개인게시판 가기 번호: 180009 추천:0  

Setup.ini 메모장으로 열어서 다른이름으로 저장할때 인코딩을 확인해보세요

이 글에 답변 등록하기
 [답변]해답을 찾았는데... 답변을 제대로 주셨는데, 제가 실수를 했습니다. ㅠㅠ 2020-03-26 오전 10:37:22
 jjchoi97  jjchoi97님께 메시지 보내기jjchoi97님을 내 주소록에 추가합니다.jjchoi97님의 개인게시판 가기 번호: 180021 추천:0  

ini를 unicode로 저장해야하네요.

 

어제 unicode로 저장해서 테스트한다고 생각했는데,

오늘 보니, setup.ini가 unicode로 변경하고 setup.txt로 변경되었었어요.

 

머리를 없애버리고 싶네요. ㅠㅠ

 

답변 주신분들 모두모두 감사합니다.

 

이번 과제 끝나고 저도 실력이 좀 올라오면 제가 할수 있는선에서 많은 공유할 수 있도록 노력하겠습니다.

 

감사합니다.

이 글에 답변 등록하기
         [답변]빠른 답변 감사드립니다. 2020-03-25 오후 4:37:06
 jjchoi97  jjchoi97님께 메시지 보내기jjchoi97님을 내 주소록에 추가합니다.jjchoi97님의 개인게시판 가기 번호: 180008 추천:0  

빠른 답변과 신경써서 답글 달아주셔서 감사합니다.

 

 

일단, 대부분의 링크들은 제가 다 검색해서 들어가 본 곳이고,

그것들을 기준으로 일단 코딩을 한것이거든요.

 

그런데 왜 안되는지를 잘 모르겠어요. ㅠㅠ

이 글에 답변 등록하기
         [답변]답변 감사드립니다. 2020-03-25 오후 5:07:31
 jjchoi97  jjchoi97님께 메시지 보내기jjchoi97님을 내 주소록에 추가합니다.jjchoi97님의 개인게시판 가기 번호: 180011 추천:0  

답변 감사드립니다.

 

일단 setup.ini를 메모장으로 열어서

ANSI, UNICODE, UNICODE(big endia),  UTF-8 네가지 모두로 저장해서 테스트해봤는데 역시나 안되요 ㅠㅠ

이 글에 답변 등록하기
                 [답변]int 를 붙혀주세요 2020-03-25 오후 5:09:16
 hyokkyu  hyokkyu님께 메시지 보내기hyokkyu님을 내 주소록에 추가합니다.hyokkyu님의 개인게시판 가기 번호: 180012 추천:0  

int iSetupNbItem = int.Parse(strRet);

이 글에 답변 등록하기
                         [답변]답변 감사드립니다. 2020-03-25 오후 5:13:39
 jjchoi97  jjchoi97님께 메시지 보내기jjchoi97님을 내 주소록에 추가합니다.jjchoi97님의 개인게시판 가기 번호: 180014 추천:0  

아. 그부분은 수정했구요. 답답해서 이것저것 하다보니 빠뜨린 부분입니다.

 

지금 문제는 컴파일 문제 없이 실행은 다 되는데..

 

int ret = GetPrivateProfileString("Setup", "NbItem", "", sb, 500, iniFile);

이 줄에서 파일도 있고, 항목도 다 있는데, sb값이 ""이고, ret값도 0이라는게 문제 입니다. ㅠㅠ

이 글에 답변 등록하기
                                 [답변]소스 그대로 복사해서 제 자리에서 해보니 잘 되던데... 2020-03-25 오후 5:38:34
 hyokkyu  hyokkyu님께 메시지 보내기hyokkyu님을 내 주소록에 추가합니다.hyokkyu님의 개인게시판 가기 번호: 180016 추천:0  

소스 그대로 복사해서 제 자리에서 해보니 잘 되던데...

 

이상하네요 ㅡㅡㅋ

이 글에 답변 등록하기
                                         [답변]감사합니다. 2020-03-25 오후 5:59:53
 jjchoi97  jjchoi97님께 메시지 보내기jjchoi97님을 내 주소록에 추가합니다.jjchoi97님의 개인게시판 가기 번호: 180017 추천:0  

아..그러면 소스 문제가 아니라..

툴의 설정이나, 프로젝트의 속성.. 뭐 이런 소스외부 문제인 모양이네요.

 

뭔가 설정을 바꿔줘야하는건지.. 프로젝트부터 다시 만들어서 해봐야 겠습니다.

 

감사합니다.!!

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.