참고링크: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=1094


코드 몇 줄 안되지만 필요할때는 귀찮아서 안하게 되어 미리 적어 놓음.

링크의 코드를 내맘대로 줄이고 테스트는 안한거라 적용 후 테스트 필요.



retainCount 매커니즘을 흉내내보았다.

객체할당시 4바이트를 추가로 할당하여 retainCount 영역으로 사용.

실사용은 해보지 않은 코드이므로 충분한 검증이 필요하다.



쉬면서 해놓은거 같은 코드가 temp 폴더에 있어서 옮겨놈.

해당 예제는 one thread 로 multi thread 코드로 바꾸어 메인 작업이 중단되지 않게 사용하면 되겠다.



1. 소문자로 변환

char cSample = 'C';

char cCalc = cSample | 32;


2. 대문자로 변환

char cSample = 'C';

char cCalc = cSample & ~32;


3. 대/소문자 상호변환

char cSample = 'C';

char cCalc = cSample ^ 32;


아래와 같은 이유로 대문자와 소문자의 차이는 세번째 비트에 있다.

세번째 비트의 설정을 바꾸어 변환한다.


'a': 0110 0001

 ~

'z': 0111 1010


'A': 0100 0001

 ~

'Z': 0101 1010

char cSample = '6';

int iSample = cSample & 15; // iSample 에 6 이 설정된다.


아래와 같은 이유로 하위 4비트만 취하면 숫자형 값이 된다.

'0': 0011 0000

'1': 0011 0001

'2': 0011 0010

'3': 0011 0011

'4': 0011 0100

'5': 0011 0101

'6': 0011 0110

'7': 0011 0111

'8': 0011 1000

'9': 0011 1001


'Windows > 스타일링' 카테고리의 다른 글

정적 배열 크기 구하기  (0) 2015.09.25
비트 연산으로 대문자, 소문자 변환  (0) 2012.04.17
1증가 또는 1감소 된 값 얻는 짧은 코드  (0) 2011.10.12
문자정수  (0) 2011.09.26
조건문 간략화  (0) 2011.09.26

입력값: 개별최소값, 개별최대값, 개수, 총합
결과값: 전부 더하면 총합이 되는, 개수만큼의 무작위 숫자

5번째 값은 총합-(1~4합계) 가 되므로 총 4개의 무작위 수를 구하면 된다.




윈도우 컨트롤의 그리기를 잠시 막을 수 있는 메세지
VCL 에서 BeginUpdate 가 없는 곳에서 사용할 수 있다.


::SendMessage(Handle, WM_SETREDRAW, 0, 0); // like BeginUpdate
::SendMessage(Handle, WM_SETREDRAW, 1, 0); // like EndUpdate



p.s: TStringGrid, TDrawGrid 에 없어서 필요하였는데 TStringGrid 는 Rows, Cols 의 BeginUpdate/EndUpdate 를 이용하면 되고, TDrawGrid 를 이용할 때 쓸 수 있겠다. 

int a = 0;
int b = -~a; // 1
int c = ~-a; // -1

a+1 또는 a-1 의 경우는 수식 내부에 쓸 경우 연산자 우선순위때문에 괄호를 붙여야 할 경우가 있는데, 이렇게 사용하면 괄호없이 사용이 가능하다.

문자 정수라는 것은 'a'처럼 작은따옴표로 둘러싼 1문자 이상의 문자열입니다. 문자 정수는 큰따옴표로 둘러싼 문자열 "a"와 의미가 다릅니다. 1문자 문자 정수는 문자 코드에 대응합니다. 예를 들어, ASCII 코드에 대응할 때는 'a'=97, '@'=64 로 정의되어 있습니다. 2문자 이상일 때는 개발 환경에 따라 독자적으로 정의되어 있습니다.

- 알고리즘 트레이닝으로 배우는 코드 단축기법 Short Coding P.99
char d[250000];
-->
char d['abc'];

크기가 정확하지 않아도 되는 경우에 사용하면 코드가 더 짧아질 수 있다.

if (conditon1)
    do_something1();

-->  condition1 && do_something1();


if (condition2 == 0)  // or if (!condition2)
    do_something2();

--> condition2 || do_something2();

+ Recent posts