728x90
    반응형

    ini 파일 읽고 쓰는 코드입니다. 

     

    핵심

    ini 파일에서 값 읽기

    GetPrivateProfileString("Parameter","ParamCnt","(NONE)",paramCnt,32,TEMP_TB.Text);     

     

    ini 파일에 값 쓰기

    WritePrivateProfileString(nodeName,"ParamCnt",paramCnt.ToString(),outputFilePath);        

     

    코드

    namespace CYW_MergeFastechParameter 
    { 
        public partial class Form1 : Form 
        { 
            public Form1() 
            { 
                InitializeComponent(); 
            } 
      
    
            //>> ini를 사용하기 위해 win32 api함수를 이용하고자 dll을 선언해준다.  
    
            [DllImport("kernel32")] 
            private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); 
            [DllImport("kernel32")] 
            private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); 
    
     
    
     
    
            private void button13_Click(object sender, EventArgs e) 
            { 
     
    
    //>> using Microsoft.WindowsAPICodePack.Dialogs; 을 해야 사용할 수 있는 CommonOpenFileDialog… 시각적으로 좋다.  
    
            
    
            CommonOpenFileDialog cofd = new CommonOpenFileDialog(); 
            cofd.IsFolderPicker = true; 
            if (cofd.ShowDialog() != CommonFileDialogResult.Ok) 
                return; 
             
            String outputFilePath = cofd.FileName + "\\OneClick.fpt"; 
            String nodeName; 
            StringBuilder paramCnt = new StringBuilder(); 
            StringBuilder paramVal = new StringBuilder(); 
     
            for (int Axis=1; Axis <= 12; Axis++) 
            { 
                TextBox TEMP_TB = (Controls.Find("textBox" + Axis.ToString(), true)[0] as TextBox);   //전체 컨트롤 중에 textBox'숫자'를 가진 컨트롤들을 TEMP변수로 지정하는 법 
                if (TEMP_TB.Text == "") 
                    continue; 
     
     
                int keyCnt; 
                nodeName = String.Format("Axis{0}", Axis - 1); 
                GetPrivateProfileString("Parameter", "ParamCnt", "(NONE)", paramCnt, 32, TEMP_TB.Text);     //ini 파일에서 값 읽기…  StringBuilder 클래스 형식임을 참고  
    
                WritePrivateProfileString(nodeName, "ParamCnt", paramCnt.ToString(), outputFilePath);        //ini 파일에 값 쓰기…  
    
                int.TryParse(paramCnt.ToString(), out keyCnt);      //String형을 int로 형변환  
                for (int keys=0;keys< keyCnt; keys++) 
                { 
                    GetPrivateProfileString("Parameter", keys.ToString(), "(NONE)", paramVal, 32, TEMP_TB.Text);   //ini파일에서 값을 읽어와  
                    WritePrivateProfileString(nodeName, keys.ToString(), paramVal.ToString(), outputFilePath);      //그대로 새로운 ini파일에 쓰기  
                } 
            } 
            MessageBox.Show("완료"); 
        } 
    }
    728x90
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기