창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


창조 팁
- '창조' 에 관한 팁을 올리는 곳입니다. 다수의 이미지가 필요하시면 아래 '이미지 자료실' 에 업로드 후 불러와 주세요..


LIST ALL
Posted by 바람2011-12-20 09:16:40, Hit : 4685
'ㅎ메모'의 문자찾아 속도 비교 2탄.[2011.12.20 12:45 내용추가]
File #1 : 문자찾아_비교.zip (703.5 KB)   Download : 90
File #2 : 1.png (26.1 KB)   Download : 86
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=tip&no=460

'ㅎ메모'의 문자찾아 속도비교 2탄입니다.

지난번 올렸던
http://cugz.sjworks.net/bbs/zboard.php?id=tip&no=341
자료에 한가지 방법을 추가했습니다.

//////////////////////////////////////////
각각의 장단점
무지 긴 문서에서 작업했을때 입니다.^^

1. 도움말 대로 실행했을때.
장점 : 가장 정확하다.
단점 : 속터지게 느리다. 프로그램 접고싶어진다..;;

2. 한줄씩 받아 찾을때.
장점 : 1번 보단 속도면에서 빠르다.
단점 : 문서 내용중 찾을 문자열 중간에 줄이 바뀌었다면 못찾는다.

3. 길이 지정해서 찾을때.
장점 : 무지막지 빠르다.
단점 : 지정한 길이안에 찾을 문자열이 없다면, 그 뒤로는 못찾고 끝난다.

웹페이지를 파싱할때 3번의 방법으로 길이지정 50000까지는 시도해봤습니다.
마니 빠르더군요.^^


필요하신분 있을듯하여 올렸습니다~^^

///////////////////////////////
ps. 'ㅎ메모'의 버그(?)
작업하면서 사용한 파일은 xml 문서이며, 130kb 이상되는 큰문서임.
문서의 마지막에 커서를 놓고,
창0.제목:=수를문(메모0.선택문자위치)+" / "+수를문(문자길이(메모0.내용.전체문자));
명령을 실행하면..........
크게는 100 이상의 차이가 나더군요.

이때문에 위 3번 방법으로, 지정한 길이안에 찾는 문자열이 없더라도, 전체문자길이와 현재커서위치를 받아 문서의 마지막까지 찾게하는걸 포기하고 말았답니다.ㅋ

재밌는 현상은,
같은 문서를 창조 작업도구의 내용에 넣고 실행하면, 정상 실행되더군요..;;

/////////////////////////////////////////////////////////////////////
///////////////   [2011.12.20 12:45 내용추가]    ////////////////////////
해결 한것 같습니다.
혹시나.. 하고 시도햇더니 되더군요..
위 3번 버튼에 아래 소스를 붙여넣고 실행해보세요.^^
////////////////////////////////////////////////////////////////////
// ㅎ메모의 문자찾아 도움말 소스는,
// 반복 될때마다 문서의 남은 부분 전체를 읽어들여 문자열을 찾으므로, 속도가 많이 느려집니다.
// 이를 보완코저 만든 소스입니다.
// 아무리 긴 문서라도 속도가 똑같습니다.

문자: 문,문1;
실수: 위치,끝,비교길이,수정위치;
문:= 에디트0.문자;
문1:=에디트1.문자;

// 문서 전체에서 찾으면 느려지므로 찾을 길이를 지정한다.
// 비교길이 숫자에따라 속도가 결정됩니다.
비교길이:=500;

// 마지막 부분의 선택문자위치를 받아온다.
// 이렇게하면, 문서 전체길이와 커서의 마지막 위치의 수가 맞지 않더라도, 커서가 문서의 전체길이의 끝에 위치함.
메모0.선택문자위치:=문자길이(메모0.내용.전체문자);
끝:=메모0.선택문자위치;
메모0.선택문자위치:=0;

위치:= 0;
수정위치:=0;
되풀이(참)
{
   // 지정한 길이내에서 찾아보고...
   위치:= 메모0.문자찾아(문, 위치, 비교길이, 거짓, 거짓);
   만일(위치=(-1))
   {
       // 지정한 길이내에 찾는 문자열이 없다면 시작위치를 지정한 위치만큼 + 시킨다.
        // -문자길이(문) 추가
           수정위치:=수정위치+비교길이-문자길이(문);
           위치:=수정위치;
   }
   아니면
   {
       // 지정한 길이내에서 찾았다면, 선택 문자를 바꿔주고...
           메모0.선택문자위치:= 위치;
              메모0.선택문자길이:= 문자길이(문);
             메모0.선택문자:=문1;
           // 위치를 바꾼 문자열 바로 뒤로 해준다. 지정한 길이내에 또 있을지 모르므로....
             위치:= 위치 + 문자길이(문1);  
   };

   // 위 소스만 가지고는 무한루프에 빠짐.
   // 남은 글자수가 비교길이 보다 작다면...
   만일((끝-위치) < 비교길이)
   {
      // 남은 길이만큼에서 반복하여 찾게한다.
          되풀이(참)
          {
                  위치:= 메모0.문자찾아(문, 위치, 문자길이(메모0.내용.전체문자)-위치, 거짓, 거짓);
                  // 남은 길이내에서 못찾으면 중지!!
                  만일(위치=(-1))
                      그쳐;
                       메모0.선택문자위치:= 위치;
                       메모0.선택문자길이:= 문자길이(문);
                       메모0.선택문자:=문1;
                       위치:= 위치 + 문자길이(문1);
          };
   };
};
문자창보여("완료");

//////////////////////////////////////////////////////////////


지상현   2011-12-20 AM 10:46:22  
문자길이는 바이트 단위로 세지만 선택문자위치는 커서 위치로 세니까 단위가 다릅니다.
특히 중간에 줄바꿈 문자가 어떤 식으로 되어 있느냐에 따라 결과가 더욱 달라집니다.
버그..라기보단 세는 방식의 차이라고 보는게 옳을 것 같습니다.

소스 코드 살짝 봤는데, 지금은 잡다한 일에 치여 있어서 바로는 못 올리겠지만 저도 저 나름대로 빠르게 처리할 수 있는 방법을 연구해서 올려보도록 하겠습니다.
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
40
   Window Message 상수값들 -_-; [3]
박종훈 2006/03/15  6421
39
     [re] 메모 가지고 놀기! [주의사항] [1]
박종훈 2006/07/25  5474
38
   XP처럼, 암호를 * 대신 ● 로 표시하기 ㅋ [3]
박종훈 2006/07/25  6583
37
   [ㅎ메모] 단어구분[자동줄바꿈] 속성에 주의하자! [5]
박종훈 2006/08/10  7482
36
   [대박!] 메모리 사용률 확! 줄여보자 ㅋ [5]
박종훈 2006/08/12  6422
35
   메모, ㅎ리스트박스 등에서, 속도향상 팁 [7]
박종훈 2006/11/11  5789
34
   [ㅎ메모] 창조만으로 알수없는 것을 API로 얻기
박종훈 2008/07/19  5794
33
   [팁] ^ㅁ^ [4]
박재성[날개달기] 2005/04/14  5343
32
   [등록완료] 창조만을 이용하여 파일합치고 풀기 [2]
박재성 2007/02/08  6296
31
   '문자찾아'의 속도비교 [4]
바람 2009/02/22  6225
30
   메모의 64k 제한..
바람 2011/11/19  5575

   'ㅎ메모'의 문자찾아 속도 비교 2탄.[2011.12.20 12:45 내용... [1]
바람 2011/12/20  4685
28
     [re] 마지막 부분에서 속도 느려짐 해결.
바람 2012/01/10  4492
27
   'ㅎ메모' 문자찾아 최종.
바람 2012/11/11  5107
26
     [re] ㅎ메모의 64k 제한..
바람 2017/10/19  2586
25
       [re] ㅎ메모의 64k 제한..
바람 2017/12/26  2525
24
   [창조 1.0] 'ㅎ메모'의 '문자찾아'
바람 2018/01/05  2624
23
   [창조 1.0] 팝업메뉴 사용 시 '제어'와 '보이기' 사용
바람 2018/01/05  2650
22
   팁입니다 ㅡ,ㅡ;; 확장자없는 미디어 사용하기 ㅡㅡ; [1]
만물 2005/10/04  6228
21
   [팁]창조로 만든 프로그램에서 윈도우의 열려있는 모든 창을 ... [8]
김환욱 2002/10/29  6543
20
   [팁]에디트에 적은 문자를 리스트박스에서 찾기..
김환욱 2002/11/24  5820
19
   잡다한 명령어들..;;;;
김진영 2002/12/22  6892
18
   창죠 문법 과 델파이 문법 비교..;; [2]
김진영 2003/01/02  6080
17
   이름=값 이거 이용해서 데이터 모으기??? [2]
김진영 2003/01/02  5158
16
   [대빵초급] 창조 문법??? 인가??ㅋㅋ [3]
김진영 2003/01/02  5246
LIST ALL   Prev [1] 2 [3] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인