'컴퓨터 이야기'에 해당되는 글 95건

  1. 2010.07.17 오랜만에 MSDN 들어가보니 많이 바꼈네요.
  2. 2010.07.17 C++ 의 mutable 키워드를 아시나요?
  3. 2010.07.17 파일 다이얼로그
  4. 2010.07.17 Self documenting 합시다!! 1
  5. 2010.07.17 자바의 변수 수명
  6. 2010.07.16 Rhythm Nerd 인터페이스 구상중.
  7. 2010.07.16 Rhythm Nerd 0.00000001
  8. 2010.07.03 Rhythm Nerd 0.0000000000001
  9. 2010.06.24 어제 수요일에 자바 스터디 모임을 가졌습니다.
  10. 2010.06.21 정규식 입문 1
  11. 2010.06.20 정규식 ( Regular Expression ) 소개
  12. 2010.06.20 무언가를 스크롤 해야하는 상황 1
  13. 2010.06.14 요즘 리듬게임을 개발중입니다.
  14. 2010.05.27 KSF 파일 포맷 검사하는 정규식 만들어보았습니다.
  15. 2010.05.27 KSF_Creator2 1.3 Source 입니다. 1

오랜만에 MSDN 들어가보니 많이 바꼈네요.

컴퓨터 이야기 2010. 7. 17. 17:35

한국에서 http://msdn.com 로 들어가면 한국페이지로 자동으로 리디렉션 될텐데요.

사실상 볼거 없고 -_-

http://msdn.microsoft.com/en-us/library

잌ㅋㅋㅋㅋㅋ

'컴퓨터 이야기' 카테고리의 다른 글

라인 트레이서 중간 점검  (0) 2010.09.02
YOU JUST ACTIVATED MY TRAP CARD  (1) 2010.07.22
무언가를 스크롤 해야하는 상황  (1) 2010.06.20
요즘 리듬게임을 개발중입니다.  (0) 2010.06.14
Duff's device  (1) 2010.05.25
:

C++ 의 mutable 키워드를 아시나요?

컴퓨터 이야기/C++ 2010. 7. 17. 17:32

class CClass

{

private:
   mutable int h;
public:
   CClass() { }
   void func() const { h=0; }
   void func2() {h=0;}
};

void main()
{
   CClass t1;
   t1.func();
   const CClass t2;
   t2.func2();
}
const 인데도 변경된다는 말... 사용빈도가 지극히 낮다. -_-;

그치만 클래스를 설계할 때 이 변수는 내부적으로 바뀌면서 쓰이고 const 로 선언 된다고 해도 활용이 가능한 변수를 지칭할 때 쓰임.

C++ 기본서에도 나오는 키워드지만 모르는 사람들이 은근 많음.

'컴퓨터 이야기 > C++' 카테고리의 다른 글

projecteuler.net : Problem 25  (0) 2010.08.16
API 후킹  (0) 2010.07.19
파일 다이얼로그  (0) 2010.07.17
Self documenting 합시다!!  (1) 2010.07.17
TR1 간단하지만 긴 소개  (0) 2010.05.25
:

파일 다이얼로그

컴퓨터 이야기/C++ 2010. 7. 17. 17:28
GetOpenFileName GetSaveFileName 

BOOL GetOpenFileName( 

LPOPENFILENAME lpofn   

); 
BOOL GetSaveFileName( 

LPOPENFILENAME lpofn   

); 
먼저 GetOpenFileName 을 소개하고자 한다. 다이얼로그박스 초기화 구조체, 이 구조체는 사용자의 파일선택정보를 저장한다. 리턴 값 사용자가 한 파일이나 OK 버튼을 클릭하면 0이 아닌값을 리턴한다. 취소나 실패했을 땐 0을 리턴한다. 음 다음으로 OPENFILENAME 구조체를 설명한다.
typedef struct tagOFN { 

   DWORD         lStructSize; 
   HWND          hwndOwner; 
   HINSTANCE     hInstance; 
   LPCTSTR       lpstrFilter; 
   LPTSTR        lpstrCustomFilter; 
   DWORD         nMaxCustFilter; 
   DWORD         nFilterIndex; 
   LPTSTR        lpstrFile; 
   DWORD         nMaxFile; 
   LPTSTR        lpstrFileTitle; 
   DWORD         nMaxFileTitle; 
   LPCTSTR       lpstrInitialDir; 
   LPCTSTR       lpstrTitle; 
   DWORD         Flags; 
   WORD          nFileOffset; 
   WORD          nFileExtension; 
   LPCTSTR       lpstrDefExt; 
   DWORD         lCustData; 
   LPOFNHOOKPROC lpfnHook; 
   LPCTSTR       lpTemplateName; 

} OPENFILENAME; 
보시다 시피 멤버가 엄청 많다. 2000이상에서 또 3개의 멤버가 추가되었다 -_-.. 

lStructSize 

       이 멤버는 그냥 sizeof(OPENFILENAME); 를 대입해 주면 된다. 

hwndOwner 

       대화 상자의 주인을 설정한다. 설정하면 그 대화상자가 끝나기 전까지 주인 윈도우는 사용하지 못한다. NULL 로 설정하면 다른 작업이 가능하다. 

lpstrFilter 

       열 파일의 타입을 지정하는 곳이다. exe 파일이나 php 파일이나 txt 파일등을 지정할 수 있다. (알려지지 않은 파일도 지정할 수 있다.) 
       지정하는 방법은 \0 로 구분해서 쓰는 방법인데, 형식은 이렇다. 
       ="모오든 파일\0*.*\0문서파일\0*.txt;*.doc;*.hwp\0" 
       ="Every File(*.*)\0*.*\0Text File\0*.txt;*.doc\0"; 

lpstrFile 

       이 멤버엔 전체경로가 들어간다. 

nMaxFile 

       적어도 256 이상은 넣어야 한다. 그냥 256 대입해주자. 

lpstrFileTitle 

       파일 이름을 받는다. 필요없으면 NULL 

nMaxFileTitle 

       파일 이름의 최대 길이 
       그러니까 char FileTitle[256]; 
       lpstrFileTitle = FileTitle; 이라고 했으면 여기엔 256 을 넣는게 좋다. 
       더 작은 배열의 크기로 할당했으면 이 값도 바뀌어야 한다. 

lpstrInitialDir 

       파일 열기창이 시작되는 디렉토리, 2000 에서는 이 멤버보다 lpstrFile 멤버가 더 우선순위가 높다. 

lpstrTitle 

       열기 박스의 제목 지정. 

Flags 

       ......MSDN 참고하기 바란다. 

nFileOffset 

       파일명이 시작되는 위치를 리턴한다. lpstrFile 에서 이 멤버만큼 더하면 그게 파일 이름이다. 

nFileExtension 

       위와 같다. 다른건 한가지, 확장자가 시작되는 위치를 리턴한다. 확장자가 입력되지 않았을 경우엔 NULL 을 가리킨다. 

lpstrDefExt 

       확장자를 입력하지 않았을 경우 디폴트 확장자를 지정한다. 
이 정도면 사용하는데 무리없을 듯 싶다. -_-+ 예제코드
#define MAX_PATH 256; 
OPENFILENAME ofn; 
char File[MAX_PATH+1]; 
ZeroMemory(File, sizeof File); ZeroMemory(&ofn, sizeof ofn); 
ofn.lStructSize = sizeof ofn; 
ofn.hwndOwner = hWnd; 
ofn.lpstrFilter = "실행파일\0*.exe\0\0"; 
ofn.lpstrFile = File; 
ofn.nMaxFile = MAX_PATH; 
GetOpenFileName(&ofn) 
주의할 점은 문자열을 초기화 시켜주지 않으면 창이 뜨지 않는다.


'컴퓨터 이야기 > C++' 카테고리의 다른 글

API 후킹  (0) 2010.07.19
C++ 의 mutable 키워드를 아시나요?  (0) 2010.07.17
Self documenting 합시다!!  (1) 2010.07.17
TR1 간단하지만 긴 소개  (0) 2010.05.25
헤더 파일은 적당히 나눠야 한다  (0) 2010.05.25
:

Self documenting 합시다!!

컴퓨터 이야기/C++ 2010. 7. 17. 17:27

Self documenting

Q.

void f() {
	TextHandler t;
	t.sendText("Hello, world", true);
}

class TextHandler {
public:
	void sendText(const std::string& msg, bool sendNewLine);
};

위의 코드에 사용된 boolean 타입에는 어떤 문제가 있을까요? C/C++ Users Journal에 실렸던 Self documenting과 관련된 내용을 소개합니다.


A.

문제의 코드 중 함수 f()를 먼저 살펴보겠습니다. 만약 TextHandler class가 다른 사람이 만들어 놓은 코드이거나 자신이 작성했더라도 어느 정도 시간이 흐른 경우라면 함수 f() 안의 t.sendText() 함수 호출 중 두번째 인자인 true가 의미하는 것이 무엇인지 알아채기가 쉽지 않을것입니다.

물론 현재 쓰이는 많은 영리한 에디터들의 경우에는 마우스 커서를 함수 위에 올려놓거나 적당한 키를 입력함으로써 두번째 인자의 헤더 파일에 선언된 이름인 sendNewLine을 tooltip과 같은 방법으로 보여줄 수도 있습니다만 모든 에디터들이 이러한 기능을 제공하지는 않습니다.

따라서 코드를 읽고 있는 사람은 이를 알기 위해 TextHandler class에 대한 문서나 헤더파일을 찾아보아야만 합니다. 이러한 작업이 필요한 이유는 true라는 값이 코드를 읽고 있는 사람에게 어떠한 부가적인 정보도 제공하지 않기 때문입니다.

문제의 코드는 다음과 같이 enum을 사용함으로써 개선될 수 있습니다.

class TextHandler {
public:
	enum NewLineDisposition { sendNewLine, noNewLine };
	void sendText(const std::string& msg, NewLineDisposition newLineDisposition);
};

void f(){
	TextHandler t;
	t.sendText("Hello, ", TextHandler::noNewLine);
	t.sendText("world", TextHandler::sendNewLine);
}

이제 f() 함수는 그 자체로 개발자에게 코드의 의미를 전달할 수 있습니다. 즉 self-documenting되어 있습니다.

Refactoring시에 적용함으로써 코드의 readability와 maintainability를 높일 수 있을것입니다.

'컴퓨터 이야기 > C++' 카테고리의 다른 글

C++ 의 mutable 키워드를 아시나요?  (0) 2010.07.17
파일 다이얼로그  (0) 2010.07.17
TR1 간단하지만 긴 소개  (0) 2010.05.25
헤더 파일은 적당히 나눠야 한다  (0) 2010.05.25
전 처리기 pragma 키워드  (0) 2010.05.25
:

자바의 변수 수명

컴퓨터 이야기/JAVA 2010. 7. 17. 17:25

자바에서는 수명이 다한 클래스의 할당도 어딘가에서 참조 하고 있다면 계속 물고 늘어지는 경향이 있다

A 라는 클래스가 있으면

A foo;
{
         A bar = new A();
         foo = bar;
} // 여기서 bar 의 수명은 끝이남.

foo.call(); // 과연 에러가 날까?

에러가 안난다. 컴파일에러 및 런타임 에러도 나지 않는다.

자바에서는 내부적으로 참조 카운터를 써서 주소를 다른곳에서 참조하고 있다면 파괴되지 않고 계속 쓰는거 같다.

만약 C++ 였다면? 런타임 에러가 낫겠지.

나는 이것이 좋다고만 보지 않는다. 변수 스코프를 저기서 끝내도록 했으면 프로그래머가 그 뒤론 이 변수를 더 이상 쓰지 않겠다는 의미로 블록을 썼을텐데.

모르는 다른곳에서 나도 모르게 이것을 쓰고 있다면 자칫잘못하면 치명적인 에러로 발전할 수 있기 때문.

뭐 C++ 에서도 지역변수를 포인터로 얻어와서 써도 에러가 나지 않는 경우도 많긴 함.

'컴퓨터 이야기 > JAVA' 카테고리의 다른 글

android studio 단축키  (0) 2015.12.16
java string int 형변환  (0) 2015.12.15
android AlertDialog 띄우기  (0) 2015.12.15
어제 수요일에 자바 스터디 모임을 가졌습니다.  (0) 2010.06.24
:

Rhythm Nerd 인터페이스 구상중.

컴퓨터 이야기/Rhythm Nerd 2010. 7. 16. 08:38

디렉토리 구조 얻어오는것과

파일이름들 하고 기타 게임상에서의 인터페이스?



잠 온다 아휴 -_-;;

'컴퓨터 이야기 > Rhythm Nerd' 카테고리의 다른 글

어느 정도... 윤곽을 보이네요.  (0) 2010.07.30
Rhythm Nerd 0.00000001  (0) 2010.07.16
Rhythm Nerd 0.0000000000001  (0) 2010.07.03
:

Rhythm Nerd 0.00000001

컴퓨터 이야기/Rhythm Nerd 2010. 7. 16. 08:36
살짝 보정.

하지만 동봉된 KSF 외의 복잡한 변속에서 제대로 보이지가 않음.




'컴퓨터 이야기 > Rhythm Nerd' 카테고리의 다른 글

어느 정도... 윤곽을 보이네요.  (0) 2010.07.30
Rhythm Nerd 인터페이스 구상중.  (0) 2010.07.16
Rhythm Nerd 0.0000000000001  (0) 2010.07.03
:

Rhythm Nerd 0.0000000000001

컴퓨터 이야기/Rhythm Nerd 2010. 7. 3. 14:52

ㅡ,.ㅡ 뚝뚝 끊기게라도 일단 해놨음. 나중에 중간 좌표 보정해줘야지.

'컴퓨터 이야기 > Rhythm Nerd' 카테고리의 다른 글

어느 정도... 윤곽을 보이네요.  (0) 2010.07.30
Rhythm Nerd 인터페이스 구상중.  (0) 2010.07.16
Rhythm Nerd 0.00000001  (0) 2010.07.16
:

어제 수요일에 자바 스터디 모임을 가졌습니다.

컴퓨터 이야기/JAVA 2010. 6. 24. 05:27

가상머신이라는게 있고 화면에 문자 출력해보고

이것저것 이야기 하다가 끝났음.


혼자 하면 지루한데 기회삼아 배워보자.

'컴퓨터 이야기 > JAVA' 카테고리의 다른 글

android studio 단축키  (0) 2015.12.16
java string int 형변환  (0) 2015.12.15
android AlertDialog 띄우기  (0) 2015.12.15
자바의 변수 수명  (0) 2010.07.17
:

정규식 입문

컴퓨터 이야기/정규식 2010. 6. 21. 16:45

펄 정규식 문법
다음과 문자셋을 제외하고는 전부 매치 할 수 있다.

.[{()\*+?|^$

문자를 직접적으로 표현할려면 \ 을 붙여줘야 됨.
예) \. \[ \? \^


와일드 카드

.

하나의 . 으로 표현될 수 있으며 이것은 널문자나 줄바꿈 문자를 제외하고 모든 문자를 매치함.

줄의 시작과 끝


^$

줄의 시작하는 곳을 찾으려면 ^
줄이 끝나는 곳을 찾으려면 $

표현 묶기

묶기 시작할 곳에서 '(' 그리고 닫는 곳에서 ')'

만약 apple 이란 단어가 여러개 붙어있는 곳을 찾고 싶다면? apple+ 하면 될까?
apple+ 이란 표현은 apple 이란 문자 전체가 반복되는것을 매치하는게 아니고
applee, appleee 와 같은 문자와 매치된다. 만약 우리가 원하는 답을 얻고 싶으면 (apple)+ 이라고 해야 된다.
추가적으로 괄호로 묶인 부분은 back-reference 라고 불리는 놈을 이용하여 재사용될 수 있다.
만약 back-reference 에 포함하기 싫다면 (?:apple)+ 라고 하면 된다.


반복
* 라는 문자는 0개 이상의 문자와 매치한다.
예를 들면 a*b 와 매치되는 문장은
b
ab
aab
aaab

+ 라는 문자는 1개 이상의 문자와 매치한다.
예를 들면 a+b 와 매치되는 문장은
ab
aab
aaaaab

? 라는 문자는 0개 혹은 1개 문자와 매치한다.
예를 들면 ca?b 와 매치되는 문장은
cb
cab
딱 두개다.

a{n} 은 a 가 n 개 반복된다는 뜻이다.
예를 들면 a{5} 와 매치되는 문장은
aaaaa

a{n,} 는 n 개 이상의 a 와 매치된다.
예를들면 a{4,}
aaaa
aaaaa
aaaaaaa

a{n, m} 은 n 번반복과 m번 반복의 사이를 찾아준다.
a{3,5}
aaa
aaaa
aaaaa

이것 혹은 저것
abc|def 는
abc 혹은 def 를 찾아 준다.
그룹으로 묶어줄 수도 있다. ab(d|ef) 는 abd 와 abef 를 찾아 준다.

문자셋
예를 들어 [abc] 는 a 혹은 b 혹은 c 와 매치된다.
주의할 점은 [(ab)c] 같은 문법은 ( 자체가 문자로 인식되어버려 (, a, b, ), c 와 매치된다는 점이다.

문자범위 지정
[a-c] 는 a 부터 c 까지를 뜻한다. 즉 [abc] 와 동일 효과를 지닌다.
그렇다고 해서 쓸모 없는것은 아니다. [a-z] 까지 찾는것을 쓸 때 [abcdef...z] 라고 쓸 순 없겠지.

문자범위 부정
[^a-c] 는 [abc] 와 매치되는것을 제외한 모든 문자와 매치된다.


지금까지 배운것을 어떻게 활용할 수 있을까? 그 응용하는 곳은 자기몫이지만
그래도 어떻게 써야겠다는지 모르는 사람을 위해 간단한 예제를 준비해봤다.

한성수 880502-1165489
우보동
김동미 890245-1234589
돈만동
박재귀 880421-2648712
소시동
정사효 900123-1423475
충덕동
류만삭 880411-2146789
뉴욕
김대규 890915-1654131
부대동
신구민 911102-1213599
덕니동
김환타 881225-1225122
변대동
......


 라는 목록이 있다고 치자. 여기서 주민등록번호만 검색하고 싶으면 아래와 같이 작성하면 된다.
[0-9]{6}-[0-9]{7}

생각외로 쉽게 끝났다. 그런데 보자...
어라? 월, 일은 숫자의 범위가 제한되어야 한다. 조건을 추가해보자.
[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])-[0-9]{7}
왼쪽 부분만 고쳤더니 오른쪽 부분도 사실상 맨 앞자리는 1,2,3,4 4개의 숫자만 들어올 수 있다.
오른쪽 부분만 고쳐보자
[0-9]{7} 에서 (1|2|3|4)[0-9]{6}

생각해보니 2월30일은 없다. 조건 추가하자.






는 훼이크고 정규식을 작성할 때 이런 식으로 조건을 하나하나씩 추가해가면서 정규식을 작성을 하는것이다.

여기서는 완벽한 주민등록번호 검사 정규식을 만드는게 목적이 아니고 어떻게 정규식을 작성하는지에 대해 글을 쓰는거니까 이쯤에서 그만둔다.

잘못된 점이나 하고 싶은 말 있으면 댓글 부탁드려요.


다음글은 이스케이트 문자와 기타 반복자에 대해서 다룰 예정입니다.

:

정규식 ( Regular Expression ) 소개

컴퓨터 이야기/정규식 2010. 6. 20. 14:42

정규 표현식(正規表現式, Regular expression에서 줄여서 Regexp 또는 Regex)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 정규 표현식은 많은 텍스트 편집기프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있으며, 특히 Tcl은 언어 자체에 강력한 정규 표현식 구현을 내장하고 있다.

정규 표현식은 컴퓨터 과학의 정규 언어로부터 유래하였으나 구현체에 따라서 정규 언어보다 더 넓은 언어를 표현할 수 있는 경우도 있으며, 심지어 정규 표현식 자체의 문법도 여러 가지 존재하고 있다. 이 중 표준화된 것으로는 POSIX의 확장 정규 표현식이 있으며, 표준화되지는 않았지만 펄의 정규 표현식과 그 대체 구현인 PCRE도 널리 사용된다.


정규식의 종류는 JGsoft/.NET/Java/Perl/PCRE/ECMA/Python/Ruby/Tcl ARE/POSIX BRE/POSIX ERE/GNU BRE/GNU ERE 정도가 있는데, 여기서는 사실상 표준처럼 널리 쓰이는 Perl 정규표현식 위주로 글을 쓰겠습니다. 비록 표준은 아니지만 C++ 0x TR1 라이브러리에서도 POSIX BRE/ERE 보다는 Perl Regular Expressions 를 기본값으로 쓰고 있거든요.

정규식을 활용하면 문서내에 숫자를 찾는것도 쉽게 할 수 있고 특정 토큰으로 분리되어있는 문서도 쉽게 뽑아올 수 있습니다.

예를 들어 숫자를 찾고 싶다면
"[-+]?([0-9]+\.[0-9]+|[0-9]+)"

라고 쓰는거죠. 위 식은 "+3.3" "-1.2" "3.5" "03.32" "-52.44" "34" "33" "+3" "-5" 등의 숫자와 전부 매치가 됩니다.

만약에 누가 어떤 문서를 주면서 "이 문서 안에 있는 모든 숫자를 가져와" 같은 업무가 발생한다면

당신은 어떻게 하겠습니까? 몇KB안되는 텍스트 문서라면 일일이 찾을 수 있겠죠. 하지만 그 분량이 많아지면 그 작업은 정말 피곤하고 영양가 없는 작업이 될겁니다. 사람이 직접 한다고 해도 그 작업의 정확성은 보장할 수 없기도 하고요.

이러한 작업을 엄청나게 간단하게 컴퓨터한테 시킬 수 있는 강력한 도구가 정규표현식입니다.
컴퓨터가 할 수 있는 일은 컴퓨터한테 시켜야되지 않겠어요?

'컴퓨터 이야기 > 정규식' 카테고리의 다른 글

이스케이프 문자와 기타 반복자  (0) 2010.07.27
정규식 입문  (1) 2010.06.21
:

무언가를 스크롤 해야하는 상황

컴퓨터 이야기 2010. 6. 20. 14:18
지금까지 리듬게임의 노트를 보면서 든 생각은 노트가 아래로 움직인다 혹은 위로 올라간다고 생각을 했다.

아는형과 이에 관해 이야기를 해봤는데,

"형은 전체 노트의 좌표를 일일이 앞으로 땡기고 그랬어요?"
->"아니, 그럴 필요없는데."
"?? 그럴 필요 없다고요? 그럼 어떻게 했어요?"
->"좌표는 놔두고 화면만 내리면 되잖아."
"ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ???ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ그런 기막힌 방법이!!! ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ"

사소한 생각의 전환이 중요하다는것을 느꼈음.

이젠 리듬게임을 볼 때 노트가 올라온다고 생각은 안할거 같다 ㅋㅋ
:

요즘 리듬게임을 개발중입니다.

컴퓨터 이야기 2010. 6. 14. 02:14


리듬게임 제목은

뭘 할지 아직 모르겠지만

게임은 안되지만 옛날 KSF 파일에 한해서 일단

뷰어기능까지는 구현 했습니다. 집에 가서 스크린샷은 첨부하도록 하죠.

일단 그건 그렇고 배속에 대한 아이디어



bpm / 60 = bps

다음노트가 올라오기전까지의 시간 = 1/(bpm/60)/tickcount 초걸림
(즉 1/bps/tickcount 뒤에 다음노트 나옴.)


예를 들면 초당 2비트.
틱카운트 1
1 ( 이 노트는 0초째 )
1 ( 이 노트까지 0.5초 걸림 )
1 ( 이 노트가 시작되는 순간 1초 )

:

KSF 파일 포맷 검사하는 정규식 만들어보았습니다.

컴퓨터 이야기/KSF Creator2 2010. 5. 27. 14:08

\n*(^(#TITLE|#PLAYER|#BPM|#STARTTIME|#TICKCOUNT|#INTROFILE|#TITLEFILE|#SONGFILE|#DISCFILE|#DIFFICULTY):.*;\\n*)+^#STEP:\n+^(([0124]{13}|(\|[BTDE](([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)|([0-9]+))\|)|(#(BPM|TICKCOUNT|DELAY|DELAYBEAT):(([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)|([0-9]+));))\n|$)+

구 KSF 포맷형식은 지원하지 않습니다.

그렇게 하더라도 사실상 저 정규식엔 헛점이 많습니다. 예를 들면 BPM 넣는곳에 숫자말고 다른 문자가 있어도 true 값을 돌려주겠죠.

말고도 문제가 많습니다. 너무 상세한 검사를 할려면 정규식이 복잡해지니까 고민중;;

깔끔한 정규식 없을까요?

'컴퓨터 이야기 > KSF Creator2' 카테고리의 다른 글

KSF Creator2 1.3 final  (3) 2010.07.20
KSF_Creator2 1.3 Source 입니다.  (1) 2010.05.27
:

KSF_Creator2 1.3 Source 입니다.

컴퓨터 이야기/KSF Creator2 2010. 5. 27. 04:16




Direct Move 에 쓰이는 KSF 파일을 편집하는 프로그램입니다.

라이센스 : GPL
라이브러리 : C++ 0x std::tr1::regex
컴파일러 : Visual Studio 2010

원래는 boost 라이브러리 썼는데 2010 C++ 0x 에 정규식을 지원한다고 해서 2010 으로 포팅했어요.


: