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

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 버튼 클릭 이벤트 질문 하나.  | WinForm Program 2020-03-25 오후 5:22:13
왕인 번호: 180015 추천:0  / 읽음:57

동봉된 텍스트 파일을 업로드해서
 
여기에 있는 단어 하나를 키워드에 입력하면 
 
그 단어가 있는 곳을 출력하는 예제인데
 
버튼 클릭할 때마다 계속 무한으로 추출하도록 하고 싶어요
근데 추출 갯수로 15/15 이러고 단어가 다 추출되면 추출이 더 이상 안 되는 것입니다.

저는 15/15 한계치가 다 되어도 무한으로 계속 추출되도록 하고 싶습니다.
 
counts 이 카운트를 없애버리고 싶은데 어떻게 하는지 모르겠네요.
 
 버튼 클릭 할 때마다 초기화(리셋) 어떻게 하나요?

 

(총 15개 중 15개 추출 완료) <== 연속 클릭해서 이러고 되면 더 이상 클릭이 안 되고 하는데

총 15개 이거를 없애고 완전 무한 클릭으로 가고 싶습니다.

객체지향적으로 되어 있어서 어렵네요.

 

15개중 15개 추출 완료 뜨면 프로그램을 끄고 다시 시작해야 리셋 되는데 클릭할 떄마다 리셋 되게 어떻게 하나요?

 

 

c# 실행파일 올립니다.

========================================

전체소스

========================================

 
 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TextSample
{
    public partial class MainForm : Form   // 클래스 모음
    {
        private Sentence[] m_sentences;
        private string m_text = string.Empty;
        private string m_keyword = string.Empty;
        private int m_index = -1;
           private bool m_isNewFile = false;
    
        class Sentence
        {
            public string sentence;
            public bool isUsed;
        };
        public MainForm()
        {
            InitializeComponent();
        }
        private void btnBrowse_Click(object sender, EventArgs e)    // 데이타 검색 체크
        {
            var dlg = new OpenFileDialog();
            dlg.Filter = "텍스트 문서 (*.txt)|*.txt|모든 파일 (*.*)|*.*";
            dlg.Title = "파일 열기";
            if (DialogResult.OK == dlg.ShowDialog())
            {
                using (var fs = File.OpenRead(dlg.FileName))
                using (var bs = new BufferedStream(fs))
                using (var sr = new StreamReader(bs, Encoding.Default, true))
                {
                    Encoding fileEncoding;
                    sr.Peek();
                    fileEncoding = sr.CurrentEncoding;
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        m_text = m_text + line + Environment.NewLine;
                    }
                }
                m_isNewFile = true;
                txtFile.Text = dlg.FileName;
              txtSentence1.Text = string.Empty;
                txtSentence2.Text = string.Empty;
           //   txtParagraph.Text = string.Empty;
            }
        }
        private void btnExtract_Click(object sender, EventArgs e)    // 버튼 클릭했을 때
        {
           
            if (string.IsNullOrEmpty(m_text))
            {
                MessageBox.Show("파일을 선택하세요.");
                btnBrowse.Select();
                return;
            }
            if (txtKeyword.Text.Trim().Length < 1) // 1글자 이상 검색
            {
                MessageBox.Show("키워드를 입력하세요. (두 문자 이상)");
                txtKeyword.Select();
                txtKeyword.SelectAll();
                return;
            }
            if (!m_keyword.Equals(txtKeyword.Text) || m_isNewFile)    // 입력한 문자와 같은지 봄
            {
                m_isNewFile = false;
                m_keyword = txtKeyword.Text;
               
                var re = new Regex(string.Format("([^\\.\"]*{0}[^\\.]*[\\.\"])", m_keyword), RegexOptions.Compiled);
                var matches = re.Matches(m_text);
                var counts = matches.Count;
                m_sentences = new Sentence[counts];
                for (int i = 0; i < counts; ++i)
                {
              
                    var temp = matches[i];
                    m_sentences[i] = new Sentence();
                    m_sentences[i].sentence = temp.Value.Trim();
                
                }
                ShuffleArray<Sentence>(ref m_sentences);
            }
           SetSentence(ref txtSentence1);  // 텍스트 박스 출력 함수 호출하여 실제로 출력
      //     SetSentence(ref txtSentence2);
        }
        private void btnMove_Click(object sender, EventArgs e)   // 버튼 클릭 액션
        {
            var btn = sender as Button;
            TextBox tb = (btn.Name == "btnMove1") ? txtSentence1 : txtSentence2;
            if (!string.IsNullOrEmpty(tb.Text))
            {
      //          txtParagraph.Text = txtParagraph.Text + tb.Text + Environment.NewLine;
                tb.Text = string.Empty;
            }
        }
        private void mnuOpen_Click(object sender, EventArgs e)   // 파일 오픈
        {
            var dlg = new OpenFileDialog();
            dlg.Filter = "텍스트 문서 (*.txt)|*.txt|모든 파일 (*.*)|*.*";
            dlg.Title = "추출된 문서 열기";
            if (DialogResult.OK == dlg.ShowDialog())
            {
                using (var fs = File.OpenRead(dlg.FileName))
                using (var bs = new BufferedStream(fs))
                using (var sr = new StreamReader(bs, Encoding.Default, true))
                {
                    Encoding fileEncoding;
                    sr.Peek();
                    fileEncoding = sr.CurrentEncoding;
                    string docText = string.Empty;
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        docText = docText + line + Environment.NewLine;
                    }
        //            txtParagraph.Text = docText;
                }
            }
        }
        private void mnuSave_Click(object sender, EventArgs e)  // 추출한 파일 저장
        {
            var dlg = new SaveFileDialog();
            dlg.Filter = "텍스트 문서 (*.txt)|*.txt|모든 파일 (*.*)|*.*";
            dlg.Title = "추출된 내용 저장";
            dlg.RestoreDirectory = true;
            if (DialogResult.OK == dlg.ShowDialog())
            {
                using (var fs = File.OpenWrite(dlg.FileName))
                using (var bs = new BufferedStream(fs))
                using (var sr = new StreamWriter(bs, Encoding.Default))
                {
         //           sr.WriteAsync(txtParagraph.Text);
                }
            }
        }
        private void mnuExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 

        private void ShuffleArray<T>(ref T[] argArr)  // 랜덤
        {
              Random rand = new Random();
               int counts = argArr.Length;
               for (int i = 0; i < counts; ++i)
               {
                  int r = rand.Next(counts);    // 
                  T temp = argArr[r];
                  argArr[r] = argArr[i];
                   argArr[i] = temp;
              }
        }

        private void SetSentence(ref TextBox argTextBox)    // 텍스트 박스에 출력 함수
        {
            int counts = m_sentences.Length;
            if (counts > ++m_index)
       //   if (counts > m_index)
            {
                    for (int i = 0; i < counts; ++i)
           
                    {
                        if (!m_sentences[i].isUsed)
                        {
                             m_sentences[m_index].isUsed = true;
                            m_sentences[m_index].sentence;  // 텍스트박스에 출력
                            break;
                    }
                }
                lblCounts.Text = string.Format("(총 {0}개 중 {1}개 추출 완료)", counts, m_index + 1);
            }
        }
 
    }
}

 

이 글에 답변 등록하기
[채택답변] 참고해보세요.
0
2020-03-26 오전 3:35:45
질문자 인사 : 정말 대단해요. 진정한 고수시군요!
  칡흙 번호: 180019  

// 배열 갯수 증가 방식

- test_array.zip 첨부 파일

 

// 리스트 증가 방식

- list <byte> 예제 확인 

 

//

[왕초보] 배열에 값넣기 질문입니다.. | 마을 :: 컨텐츠 상세보기
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=179245&ref=179241

 

 

 

 [답변]참고해보세요. 2020-03-25 오후 8:31:42
칡흙 번호: 180019 추천:0  

// 배열 갯수 증가 방식

- test_array.zip 첨부 파일

 

// 리스트 증가 방식

- list <byte> 예제 확인 

 

//

[왕초보] 배열에 값넣기 질문입니다.. | 마을 :: 컨텐츠 상세보기
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=179245&ref=179241

 

 

 

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 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.