컴퓨터/C# 20

[C#] TypeLoadException 예외 해결 방법

에러가 발생한 코드에 문법적, 논리적 문제가 없어 보일 경우, 다음 두 가지를 확인한다. 1. 프로젝트 이름 확인프로젝트 이름이 겹칠 경우, 발생할 수 있다고 한다.'프로젝트 속성 > 어셈블리 이름' 을 확인한다. 2. dll 버전 확인예외를 발생시킨 dll 의 버전을 확인한다.ex ) Math.Net 의 경우 MathNet.TypeLoadException 이런 식의 예외를 던졌다.사용하는 dll 의 버전이 다를 경우에 이 에러가 날 수 있다고 한다. 이번에는 2번 방법으로 해결하였는데,한 모듈과 테스트 프로젝트의 Math.net 버전이 각각 달라서 발생하였다. 참고 : How to debug System.TypeLoadException errors in .NET?

컴퓨터/C# 2015.08.31

[C#] 객체의 XML 직렬화 (Serialization)

1. 직렬화, XML 저장하기, XML 불러오기1234567891011121314151617181920public void OpenProjectFile(string fpath){ if (File.Exists(fpath)) { try { using (var sr = new StreamReader(fpath)) { var xs = new XmlSerializer(typeof(MyProjectInfo)); var prj = (MyProjectInfo)xs.Deserialize(sr); this.project.Set(prj); } } catch (Exception ex) { Console.WriteLine(ex); MessageBox.Show("프로젝트 파일 로딩 실패 : " + fpath); } }}Color..

컴퓨터/C# 2015.07.02

[C#] Stream.Read 메서드에 관하여..

Stream.Read Method12345public abstract int Read( byte[] buffer, int offset, int count)cs 매개 변수buffer형식: System.Byte[] 바이트 배열입니다. 이 메서드가 반환될 때 버퍼에는 지정된 바이트 배열의 값이 offset 및 (offset + count - 1) 사이에서 현재 소스로부터 읽어온 바이트로 교체된 상태로 포함됩니다. offset형식: System.Int32 현재 스트림에서 읽은 데이터를 저장하기 시작하는 buffer의 바이트 오프셋(0부터 시작)입니다. count형식: System.Int32 현재 스트림에서 읽을 최대 바이트 수입니다. 반환 값형식: System.Int32 버퍼로 읽어온 총 바이트 수입니다. 이 ..

컴퓨터/C# 2015.06.26

[C#] C#에서 C++ DLL 사용하기

- C# Wrapper 만들때 native c 로 구현하는 것이 귀찮아서 아래 방법을 사용함. 구조체 사용에 제약이 있음.. - '이 방법'을 뭐라고 부르는지 아직 모르겠음,.. - 관련어 : Pinvoke, InteropServices - 마샬링 : 한 객체의 메모리에서의 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 과정, 참고 - P/Invoke : .NET Framework는 DLL 안에 패키지된 관리되지 않는 함수를 관리되는 응용 프로그램에서 호출할 수 있도록 Dllimport 특성과 함께 명시적 플랫폼 호출(PInvoke) 기능을 제공합니다. 예를 들어 Win32 함수를 호출하려면 PInvoke가 필요합니다. 자세한 내용은 C++ Interop 사용(암시적 PInvoke)을..

컴퓨터/C# 2015.06.15

[C#] string to DateTime

(Try)ParseExact의 두번째 인자인 format을 잘못 넣어서 에러string 인자에 들어올 예상되는 형식을 넣어줘야한다.변환되기 원하는 포맷을 넣는게 아님. 123456789101112131415// 입력 날짜 : Shape 데이터에서 가져오는 건데 포맷이 "yyyy/MM/dd" 형태로 되어있음.DateTime inputDate = feature.GetFieldAsString("RegDate");// 저장 날짜DateTime outDate = new DateTime(); string sDate = ""; #if Test // 1. 그냥 변환 outDate = Convert.ToDateTime();#else // 2. 예외 발생 처리 outDate = DateTime.ParseExact(inpu..

컴퓨터/C# 2015.02.26

[C#] Array 배열 다루기 (생성, 복사, 부분 복사)

Colored By Color Scripter™123456789101112131415//// 그래프에서 불필요한 8개의 데이터 제외하고 복사 int nCopy = objinfo.Length - 8;// 전체 복사 (복제)// Object를 반환하기 때문에 강제 캐스팅 해줘야함.float[] _cpyArray = (float[])objinfo.Clone(); float[] _dstArray = new float[nCopy]; // 복사하려는 배열의 크기가 일치해야한다.// http://msdn.microsoft.com/ko-kr/library/z50k9bft(v=vs.110).aspx // 해당 링크의 '예외' 참조// _cpyArray[8]부터 _dstArray[0]에 nCopy개 만큼 복사Array.C..

컴퓨터/C# 2014.11.05

[C#] ZedGraph 사용자 ContextMenu 항목 추가하기

ZedGrph 디자이너에서 번개모양을 클릭하여 ContextMenuBuilder 이벤트를 자동으로 추가한다.디자이너를 사용하지 않을경우 다음 코드를 추가한다. zedGraphControl1.ContextMenuBuilder += new ZedGraphControl.ContextMenuBuilderEventHandler( MyContextMenuBuilder ); 불필요한 항목을 삭제하거나 수정할 때 private void MyContextMenuBuilder( ZedGraphControl control, ContextMenuStrip menuStrip, Point mousePt,ZedGraphControl.ContextMenuObjectState objState) { foreach( ToolStripMe..

컴퓨터/C# 2014.11.03