본문 바로가기 메뉴 바로가기

손끝으로 만드는 세상

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

손끝으로 만드는 세상

검색하기 폼
  • 분류 전체보기 (30)
    • 개발 일반 (0)
    • Android (1)
    • WPF (4)
    • C# (18)
    • Linux (Ubuntu) (5)
    • Python (2)
  • 방명록

c# (14)
길이가 고정되지 않은 pointer array 마샬링하기

C/C++ 에서 작성한 코드를 C#에서 사용하기 위한 작업을 하던 중, 가변길이 포인터 배열에 대해 변환하는 방법에 대해 공유합니다. 샘플로 만든 C 코드는 아래와 같습니다. typedef struct { char *name; int age; } my_data; typedef struct { int len; my_data **data_list; } my_data_list; __declspec(dllexport) void print_my_data_list(my_data_list *list) { int i; if (!list) { printf("[ERROR] no list\n"); return; } printf("[INFO] list length : %d\n", list->len); for (i = 0; i..

C# 2017. 4. 2. 16:42
탐색기구현 1. TreeView를 만들어 보자!

탐색기구현1 - TreeView를 만들어보자! - 폼 왼쪽의 트리뷰 구현 해야할일 - 내 컴퓨터의 드라이브 목록 뽑아오기 - 윈도우가 로드되었을 때 시스템 드라이브목록 가져오기 - 노드가 확장될 때 서브 디렉토리 목록 가져와서 노드에 추가하기 1. 윈도우가 로드되었을 때 시스템 드라이브 목록 가져오기 void Window1_Loaded(object sender, RoutedEventArgs e) { // Root 드라이브 생성 foreach (string str in Directory.GetLogicalDrives()) { try { TreeViewItem item = new TreeViewItem(); item.Header = str; item.Tag = str; item.Expanded += new ..

WPF 2009. 4. 8. 20:00
다른이름으로 저장하기 다이어로그

다른 이름으로 저장하기! SaveFileDialog (Microsoft.Win32) 예제 SaveFileDialog dialog = new SaveFileDialog(); if (dialog.ShowDialog() == true) { string str = dialog.FileName; // 지정한 파일이름으로 작업 }

C# 2009. 4. 8. 19:58
#if, #endif 보다는 Conditional Attribute를 이용하라!

#if, #endif 보다는 Conditional Attribute를 이용하라! 기존방법 예제 : #if, #endif 방법 private void Check() { #if DEBUG string name = new StackTrace().GetFrame(1).GetMethod().Name; Trace.WriteLine("Check for Person : "); Trace.WriteLine("called by " + name); #endif } 좋지 않은 점 : 1. Release모드일 때에는 메소드 내용이 포함되지는 않지만 쓸데없는 메소드 호출을 피할 수 없다. 2. 코더의 실수를 유발하여 의도하지 않은 코드가 삽입될 수 있다. 개선시킨 방법 예제 : Conditional Attribute 사용 방법 ..

C# 2009. 3. 30. 17:09
강제 형 변환(cast)보다는 as, is 연산자를 사용하는 것이 좋다

강제 형 변환보다는 as, is가 좋다! C#에서도 C, C++, Java등에서 사용하던 강제 형 변환을 할 수 있다. 형 변환 예) void EventHandler(object obj, EventArgs e) { MyClass myClassByCast = (MyClass)obj; // cast사용 MyClass myClassByAs = obj as MyClass; // as 사용 } C#에서는 위처럼 object형을 형 변환해야 할 때가 종종 있다. 중요한 점은 위처럼 강제 cast를 하나 as키워드를 사용하나 그 결과는 같다는 것이다. 그렇다면 왜 as키워드를 사용해야 하는 걸까? 1. as나 is 연산자는 런타임에 객체의 형 변환이 가능한지를 확인하기 위해서 사용자가 정의한 형 변환 연산자를 고려하..

C# 2009. 3. 30. 00:49
[C#] 컴퓨터의 Beep음을 내는 방법

시스템함수 Beep(int frequency, int duration)을 이용하면 된다 Kernel32.dll을 임포트해서 사용할 수 있다. 예제소스 : /// /// 비프음을 내는 시스템 함수 /// /// 주파수 /// 비프음 길이(시간, 단위 : 1000 = 1초) [DllImport("KERNEL32.DLL")] extern public static void Beep(int freq, int dur); public static void Main() { // 출처 : 네이버 // 도 = 256Hz // 레 = 도 * 9/8 = 288Hz // 미 = 레 * 10/9 = 320Hz // 파 = 미 * 16/15 = 341.3Hz // 솔 = 파 * 9/8 = 384Hz // 라 = 솔 * 10/9 =..

C# 2008. 12. 31. 12:17
[C#] CapsLock 상태 확인하는 방법

[DllImport("user32.dll")] public static extern short GetKeyState(int keyCode); [DllImport("User32.dll")] public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); if ((Win32API.GetKeyState((int)Keys.CapsLock) & 0xffff) != 0) { Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 0, 0); Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 2, 0); } 설명 : Win32 API 함수 중에..

C# 2008. 12. 29. 10:41
[C#] 다중배열 사용하기 - 일반다중배열, 톱니배열

C#에서 다중배열은 크게 일반적인다중배열, 톱니배열로 나눌수 있습니다. 일반적인 다중배열은 각 차원을 한번에 설정해주어야 하고 각 차원마다의 크기가 같게됩니다. 톱니배열은 각차원의 크기를 다르게 설정해줄 수 있고, 차원의 크기를 실행중에 할당할 수 있습니다. 간단히 예제를 보시면 이해되실 수 있을거라 생각됩니다. int lv1 = 2; int lv2 = 3; int lv3 = 4; // 일반적인 다중배열 사용방법 double[,,] PanBuf; PanBuf = new double[lv1,lv2,lv3]; PanBuf[0, 0, 0] = 5.0; // 톱니배열사용(각 차원의 크기를 다르게 지정할 수 있음) // 톱니배열 사용 예 #1 - 각 차원마다 같은 크기 지정 // 1차원 - lv1, 2차원 lv2..

C# 2008. 12. 26. 05:07
[C#] C++에서의 CList<object, object&>를 C#에서 구현하기

[질문 – C++에서의 CList를 C#에서 어떻게 구현하는가] 이번에 C#을 다루게 되었는데, MFC로 구현된 것을 C#으로 바꾸고 있습니다. 중간에 지금 막혀서 그런데 많은 답변 부탁드립니다;;; ㅠㅠ;; MFC의 CList 를 C#에서 List 으로 하는 표현방식이 맞는지 모르겟네요 오류는 나지않지만..... 그리고 MFC의 CList 클래스 GetHeadPosition(), GetNext() 를 C#으로 매칭시키는 함수가 궁금합니다;;; 아니면,,,, 구현하는 방법이라도 답변부탁드립니다;;;; ㅎㅎ [답변] List를 접근하는 방법은 열거자를 이용하는방법, 인덱스로 접근하는 방법, foreach문을 통해 접근하는 방법등이 있다. 간단한 예제를 작성해 보았다. 다음 3가지의 경우는 모두 같은 출력물..

C# 2008. 12. 26. 02:25
[C#] 한개의 객체 만들어 공유하기 #Singleton Pattern

유일무이한 인스턴스를 만들어 사용하기 프로그래밍을 하다 보면 여러 개의 클래스에서 한 개의 객체에 접근하고 싶을 때가 많습니다. 다음과 같은 클래스가 있다고 가정해봅니다. Code – Singleton.cs class Singleton { private int a; public Singleton() { a = 0; } internal void SetA(int val) { this.a = val; } internal int GetA() { return a; } } 간단한 클래스이니 주석이나 설명은 생략하겠습니다. 이 클래스의 객체를 생성하여 a값을 접근하는 두 개의 각각의 클래스가 있다고 생각해봅시다. Code – ClassA.cs class ClassA { Singleton singleton; publi..

C# 2008. 12. 25. 19:13
이전 1 2 다음
이전 다음

Blog is powered by Tistory / Designed by Tistory

티스토리툴바