자바스크립트 문자열 처리

Posted by 빵빵빵
2009/03/10 18:20 전산(컴퓨터)/PC-Windows



자바스크립트 문자열 처리

출처 : http://srufaculty.sru.edu/david.dailey/javascript/string.html

Some of JavaScript's
string handling mechanisms

The basics

string1.charAt(num1)
returns character at position num1 within string1

If string1 is "a string" and number is 3,
then string1.charAt(3) is "t".


number

string

string.charAt(number)
string1.indexOf(string2)
returns first character position of string2 within string1

If string1 is "a string" and substring is "str",
then string.indexOf(substring) is 2.

If string1 is "a string" and substring is "stX",
then string.indexOf(substring) is -1.


substring

string

string.indexOf(substring)
string.substring(from,to)
returns the substring within string starting at the fromth char
up to the th char

If zz is "happy" then zz.substring(3,5)="py"

 
from   to

string

string.substring(from,to)
string.length
If string="hamburger"
then string.length=9

string
string.length

Fancier stuff

string.split(re)
splits a string into an array, based on a delimiter (a string or regular expression)

If s="a.bc.def.g.hijk" and re="."
then s.split(re)[0]="a",
s.split(re)[1]="bc",
and s.split(re)[4]="hijk".

delim
  index

string

Using join and split to replace substrings (like sed 's/alpha/beta/g' in UNIX)

Using the replace method, with regular expressions:

var r=/[aeiou]/g  //a regular expression for all vowels.
var s="happy ever after in the marketplace"

Then, s.replace(r,"Q") returns "hQppy QvQr QftQr Qn the mQrkQtplQcQ"

string.match(re)
determines whether or not a string contains (matches) a given regular expression.

If string="Do it and think." and re=/[^\s]*t\s+/
then string.match(re) returns "it"
since the regular expression looks for any word ending with "t"

re= string=

string.match(re)

Dealing with keystrokes

Specialized things

eval(string)
converts string of digits (or an expression) to number
Useful for reading form elements on a page (which by default are read as strings).

if string="12345" then eval(string)=12345.
if string+1=123451,then eval(string)+1=12346.

string

eval(string)
eval(numberstring).toString(16)
converts number to hexadecimal

if numberstring=255
then numberstringtoString(16) is "ff"

number

number.toString(16)
Numeric to ASCII
number

String.fromCharCode(number)
ASCII to Numeric
ASCIIchar
 
number=ASCIIchar.charCodeAt(0)
escape(string)
replaces special characters by escape sequences

escape(string)
2009/03/10 18:20 2009/03/10 18:20

툴바에 컨트롤을 추가하는 예제

Posted by 빵빵빵
2009/03/05 16:05 전산(컴퓨터)/PC-Windows



 
 

개발 환경

 

  1. OS 환경  : WindowXP

  2. 사용 언어 : VC++ 6.0

  3. 개발에 필요한 환경 1) Resource View탭을 선택합니다.

                              2) TestStatusBar resources를 선택하고 오른쪽버튼을 클릭합니다.

                              3) Insert를 선택하고 resources type에서 Toolbar를 선택하여 Toolbar

                                  resources를 추가합니다.

 

 

◈ 프로그램 설명

 

 1. 툴바에 추가될 콤보박스를 생성합니다.

 2. 생성된 툴바는 DockControlBar()함수의 내부적인 수행으로 인해 툴바내의 영역 이외의

     공간에 다른 컨트롤을 생성하게 되면 보이지 않는 문제가 있습니다.

     그래서, 툴바위의 다른 버튼들에 영향을 주지 않게 하기 위해서는, 툴바 위에 아무 역할을

     수행하지 않는 버튼들을 더 추가하여 툴바의 길이를 늘리고, 그 위에 컨트롤을 배치합니다.

 3. 콤보박스에 문자열을 추가하여, 선택된 문자열은 메시지를 통해서 출력됩니다.

 

 

◈ 중요 소스 설명

 

CFrameWnd에서 계승받은 MainFrame클래스에 OnCreate ()함수를 이용해서 툴바위에 콤보박스를

생성하고 문자열을 추가하는 코드입니다.

 
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if(CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;
        
        if(!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP |
           CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
           !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)){
            TRACE0("Failed to create toolbar\n");
            return -1;
        }
     
        if(!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators,
              sizeof(indicators)/sizeof(UINT))){
            TRACE0("Failed to create status bar\n");
            return -1;
        }
       
        // 상태바에 추가될 콤보박스 를 생성한다.
        m_combo.Create(WS_CHILD | WS_VISIBLE | CBS_HASSTRINGS | CBS_DROPDOWNLIST,
                           CRect(200, 0, 295, 100), &m_wndToolBar, 16000);
        m_combo.AddString("TIPSSOFT");
        m_combo.AddString("TIPSWARE");
        m_combo.AddString("팁소프트");
       
        m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
        EnableDocking(CBRS_ALIGN_ANY);
        DockControlBar(&m_wndToolBar);
        
        return 0;
    }
 

 

Continue...(추가적으로 코드가 필요하신 경우에는 소스를 다운받아 참조하세요.)

2009/03/05 16:05 2009/03/05 16:05

CxImage를 이용한 MFC기반의 Image Reader 만들기

Posted by 빵빵빵
2009/03/04 20:19 전산(컴퓨터)/PC-Windows



출처 : http://guru1013.egloos.com/1107342

Jpeg과 같은 외부 라이브러리가 필요한 파일을 읽기 위해서 삽질을 좀 하다가 CxImage 라는것을 알게 되었다.

라이브러리 등록 과정이 생각보다 까다로워서 웹페이지도 뒤져보고 그랬는데 제대로 된 설명이 없더라 -_-;
(내가 못찾은거겠지만)

결국 도서관에서 관련서적을 하나 빌려서 라이브러리를 사용하는데에 성공하게 되었음.

혹시나 나같은 사람이 있을까 몰라서 포스팅을 하나 쓴다.
(사실은 책을 반납해야되서 나중에 까먹을까봐)

본 포스트는 '홍릉과학출판사'의 '오픈소스 CxImage를 이용한 Visual C++ 디지털 영상처리' 라는 책을 기반으로 썼으며,
다소 불필요해 보이는 부분에 대한 설명은 생략한다.



1. 우선 http://www.xdp.it/ 에 들어가서 좌측에 Downloads 메뉴를 클릭하면 다음과 같은 창이 뜬다.

대부분은 아직 VC++ 6.0 사용자이므로 우선 빨간 동그라미가 쳐진것을 받게 될 것이다.
만약 .net frame을 사용중이라면 그 위의것을 받도록 하자.

압축을 해제하고 가장 상위 디렉토리에 있는 CxImgLib.dsw를 실행하자.


2. CxImage 라이브러리를 생성해야 하므로 아래와 같이 File 탭에 CxImage files과 CxImageCrtDll, CxImageMfcDll 우클릭시 나오는 팝업에서 Build를 클릭한다. 이렇게 하면 라이브러리가 생성된다.


자 이렇게 하면 프로젝트 폴더의 Debug에 cximage.lib 라는 정적 라이브러리 파일이 생성된다.
이로서 CxImage를 사용하기 위한 기본적인 준비는 끝났다.
이제 이를 이용해서 MFC의 MDI Application을 만들어보도록 하자.

3. VC++ 6.0을 실행시킨후 새 프로젝트로 MDI Application을 하나 만들자.
편의상 프로젝트명은 FirstCxImage로 하였고, 이 부분은 입맛대로 바꾸어도 좋으나, 튜토리얼을 수월하게 따라가려면 우선 FirstCxImage로 하도록 하자.
세팅은 모두 Default로 진행해도 좋으나, 큰 이미지가 load 되었을 때를 대비해서 Step 6 of 6 에서 Base class에 CScrollView를 눌러주도록 한다.



자 이제 기본 틀은 만들었고, 본격적으로 CxImage와 연동을 해보도록 하자.

4. 우선 CxImage 관련 헤더파일들을 FirstCxImage 프로젝트에 복사를 해야 한다.
FirstCxImage/include 디렉토리를 만들고 cximage599c_full/CxImage/의 모든 헤더파일을 복사하도록 하자.


복사가 완료되면 Alt+F7을 눌러서 Project Setting 을 변경해야 한다.
다음과 같이 빨간 동그라미가 쳐진 부분을 유심히 보면서 바꾸어 보도록 하자.
이 과정을 끝내면 헤더파일의 include를 위한 준비가 마무리 된다.


이제는 include를 통해서 실제 코드에서 쓸 수 있도록 해야 하는데,
추천하고 싶은 방법은 stdafx.h에 #include "xImage.h" 를 추가하는 방식이다.


다음에는 라이브러리 파일을 복사한다. CxImage599c_full 디렉토리 하위에서 *.lib로 검색을 해서 나온 파일들을
FirstCxImage/lib 디렉토리를 만들어서 여기에 복사한다.

또한 정적 링크 라이브러리를 복사해야 한다.
cximage.lib를 FirstCxImage/Debug에 복사하도록 하자.
위 검색결과에서 나온 cximage.lib를 복사해도 된다.

다음으로는 project setting 을 다시 열어서 Object/library modules 에다가
Debug/cximage.lib ./lib/png.lib ./lib/Jpeg.lib ./lib/zlib.lib
 ./lib/Tiff.lib ./lib/j2k.lib ./lib/jbig.lib ./lib/jasper.lib
를 추가하도록 하자.


... 드디어 길고 긴 라이브러리 연동이 끝났다.
FirstCxImage를 컴파일 하고, 에러가 없으면 잘 된거고, 에러가 나면 당신이 뭔가 실수를 한 것이다. 한마디로 내 잘못이 아니라는 뜻이니까 따지지 말라는 것이지 으하하하하하핳하ㅏ(죄송)

이제 API를 이용하여 이미지를 Load하고 띄우는것만 하면 된다.
API 써서 이미지 읽는법은 다음 포스팅에...
2009/03/04 20:19 2009/03/04 20:19