전체 글
[MFC] 동적 메모리 할당한 구조체의 CString형 변수 에러
MFC 에서 구조체를 동적할당하려고할때 CString 변수를 선언하고 값을 넣으려니 오류가 발생했다. 1. 아래의 코드에서 오류는 발견되지 않는 걸봐서 코드로 작성은 할 수 있는 걸로 보인다. typedef struct { CString s; }Node; 2. 그러나 아래의 코드처럼 메모리를 동적할당하여 멤버변수에 값을 넣어주려고 하니 오류가 발생했다. Node * node = (Node *)malloc(sizeof(Node) * 100); node[2].s = "abc"; //error 3. String의 길이를 가늠할 수 없어서 그런 것 같기도하다. 그래서 구조체를 동적할 당할 때 String을 저장하고 싶으면 char형 변수를 사용할 수 밖에 없을 것 같다. typedef struct { char ..
[MFC] CListCtrl에 많은 항목을 추가해야할 때 속도를 향상시키는 방법 (LVS_OWNERDATA, SetItemCountEx)
IssueCListCtrl에 적은 수의 항목을 추가할 때는 CListCtrl에 항목이 바로 보여졌다. 그러나 6000개를 추가하려고하니 CListCtrl이 나타나는 속도가 느려졌다. CListCtrl의 항목을 새롭게 업데이트하기 위해 InsertItem으로 항목을 하나하나 추가하는 방식이 느린 것이었다. 6000개를 모두 추가하고 show를 해주려고하니 느려질 수 밖에 없는 것이다. SolutionCListCtrl의 Owner Data 속성을 True로 설정해준다. 이를 사용하면 6000개의 모든 항목을 List에 추가한 후 항목을 보여주는 것이 아닌, 사용자에게 보여지는 위치의 데이터만 스크롤 위치에 따라서 그때 그때 참조해서 보여주는 방식이다. 이 Owner Data방식에서는 InsertItem과 D..
Fortran은 Call By Reference
포트란은 함수를 호출할때 인자로 주소를 넘긴다. 나는 C에서 할당한 메모리공간을 포트란의 dll과 공유하는 작업을 했다. C에서 넘겨받은 주소를 포트란 dll에서 내부변수로 지정할 수 있는데 Target을 설정해야하는 것이었다. 할때 정확하게 기록해둘껄 이제서야 이렇게 짤막하게 기록한다.
[MFC] CString 문자열 ( ) 속 문자열 추출
문자열 추출 int flowerNo; CString name = "flower (39)"; int startPos = name.ReverseFind('(') + 1; int endPos = name.ReverseFind(')'); int nCount = endPos - startPos; flowerNo = name.Mid(startPos, nCount); (CString).ReverseFind : 뒤에서 부터 해당 문자의 위치를 반환 (CString).Mid(pos, nCount) : pos 위치 부터 nCount개의 문자열을 가져온다.
[Android] Text입력창 글자 수 제한하기 (EditText, TextWatcher)
글자 수를 세어주고 원하는 글자수까지만 입력할 수 있도록 하는 기능을 어떻게 구현할수있을까? Text를 입력하는 창은 EditText로 만들고 리스너를 달아준다! EditText inputMessage= findViewById(R.id.inputMessage); TextWatcher watcher = new TextWatcher() { public void onTextChanged(CharSequence str, int start, int before, int count) { //텍스트가 입력될때마다 텍스트 숫자를 세어준다. byte[] bytes = null; try { bytes = str.toString().getBytes("KSC5601"); //KSC5601은 안드로이드에서 한글을 byte로 변..
C언어 2차원 배열 동적 할당
[방법 1] 2차원 배열을 선언할 때 배열의 크기를 지정해준다. int arr[2][3]; // 가로 3,세로 2인 2차원배열이 할당된다. * 배열을 선언할 때 가로 세로의 길이를 변수를 사용하여 지정하는 것은 불가능 하다. 그래서 malloc()으로 동적 할당을 받아야한다. int a=2; int b=3; int arr[a][b] ; //불가능 [방법 2] malloc( )으로 2차원 배열 공간을 동적 할당한다. (1) malloc으로 2차원 배열 만들기 : malloc( ) 을 여러번 호출 이 방법은 할당과 해제가 번거롭다. /*2차원 배열 동적할당*/ int width=2; int height=3; int** arr= (int**)malloc((sizeof(int*)*height); for(int ..
(JAVA) UTF-8로 인코딩된 txt file의 첫 어절 BOM
[Issue] UTF-8로 인코딩된 파일을 불러와서 텍스트를 read할 때 첫 char로 형태가 없는 character가 read된다. 첫 어절을 read할 때 원하는 값이 read되지 않는 문제가 있었다. (해결과정) .txt의 내용이 일때 (1) String d1 ="d" (2) String d2 = .txt내용의 첫어절 - d1과 d2를 print해봤을 때는 같은 값 d가 출력된다. - 그러나 d1.equals(d2)는 false값이 나온다. - d1의 length는 1이고, d2의 length는 2이다. - d2.charAt(0)의 int값을 확인한 결과 65279인것으로 확인 [해결] .txt의 첫 char를 int형으로 출력해본 결과 65279이었다. 이는 UTF-8로 인코딩 된 것임을 알리기..