728x90
반응형
WPF & C# - ini 파일 내 방식대로 읽기 ( ini / cfg / config / txt / sector / 섹터 ) |
@ ini 파일 읽기
인터넷 검색해보니 dll 파일 쓰라고 나와있던데, 그거 쓰고도 뭔가 찝찝한 느낌이 들어서 그냥 간단하게 만들어봤다.
어떤지는 아직 잘 모르겠다.
일단 파일 전체를 읽은 후 점점 좁혀들어가는 방식을 취했다.
( 한줄씩 읽는것도 있으나 전체 읽어들인 파일을 나중에 또 써먹을까 싶어서다. )
파일전체 읽기 > 해당 섹터 ( setor )찾기 > Key 값 찾아서 value return 하기
사용방법은 아래와 같다.
string val = iniRead(iniPath, "setor222", "Program"); // 파일주소, 섹터, 키 값
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <Window x:Class="txt_compare.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:txt_compare" mc:Ignorable="d" Title="MainWindow" Height="341" Width="508"> <Grid> <Button x:Name="btn_Read" Content="Read" HorizontalAlignment="Left" Height="58" Margin="10,65,0,0" VerticalAlignment="Top" Width="67" Click="btn_Read_Click"/> <TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="ini 파일 읽어 들이기" VerticalAlignment="Top" Height="50" Width="362" FontSize="24"/> </Grid> </Window> | cs |
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | private void btn_Read_Click(object sender, RoutedEventArgs e) { string iniPath = @".\aaa.ini"; string val = iniRead(iniPath, "setor222", "Program"); MessageBox.Show(val); } // iniRead private string iniRead(string iniPath, string sectorWord, string keyWord) { string val=""; // 리턴 값 string paragraph = ">> "; // setor 구분자 try { // ini 파일 읽어 들이기 StreamReader file = new StreamReader(iniPath); string str = file.ReadToEnd(); // file 전체를 읽어들인다. file.Close(); string[] setor = str.Split(new string[] { paragraph }, StringSplitOptions.RemoveEmptyEntries); // setor 단위로 배열에 저장 foreach (string setor_str in setor) { if (sectorWord == setor_str.Substring(0, sectorWord.Length)) // sectorWord 와 매칭되는 Sector check { string[] sentence = setor_str.Split('\n'); // sector을 line 별로 저장 foreach (string sentence_str in sentence) { if (sentence_str.IndexOf("=") >= 0) // sentence에 "=" 가 포함되는지 check { if (keyWord == sentence_str.Substring(0, sentence_str.IndexOf("=")).Trim()) // keyWord 값 매칭 { val = sentence_str.Substring(sentence_str.IndexOf("=") + 1).Trim(); break; } } } } } } catch (Exception error) { MessageBox.Show(error.Message); } return val; } | cs |
@ 리턴값을 string val=""; 이렇게 해줘야 에러가 안난다.
처음에는 string val; // 리턴 값 이렇게 했는데... 에러난다... 왜그런지 아는 사람은 알려주쎄요... ㅠㅠ
그래서 string val=""; // 리턴 값 이렇게 바꿨더니 에러가 안난다. 뭘까?
이거 때문에 또 한참 고생했다. ㅠㅠ
* 파일과 좀 다르다. 소스에 약간의 수정된 부분이 있다.
http://insurang.tistory.com
728x90
반응형
'Programing (프로그래밍) > WPF & C# (C Sharp)' 카테고리의 다른 글
[ WPF & C# (C Sharp)] - installer 인스톨러 setup (2) | 2017.11.01 |
---|---|
[ WPF & C# (C Sharp)] - DateTime 구조체 / 파싱 / parsing / 날짜 / 시간 (0) | 2017.10.31 |
[ WPF & C# (C Sharp)] - 파일 만든 수정한 액세스 날짜 (2) | 2017.10.31 |
[ WPF & C# (C Sharp)] - 다운로드 WebClient 방식 / Download (0) | 2017.10.30 |
[ WPF & C# (C Sharp)] - Lib.cs Lib.dll 만들기 (0) | 2017.10.27 |
[ WPF & C# (C Sharp)] - Split / 문자열 자르기 (0) | 2017.10.27 |
[ WPF & C# (C Sharp)] - 두 txt 파일 한줄씩 읽어서 중복 값 제거 (0) | 2017.10.26 |
[ WPF & C# (C Sharp)] - ListView 예제 (2) | 2017.10.25 |