Programming/C# - Window 81

C#/ string.Format() 사용

예시: string strRelayCommand = string.Format("{0}{1:D2}/", (bIsOn ? "O" : "F"), iRelayNo); # string.Format() 메서드 첫 번째 인수는 서식 문자열입니다. 이 코드에서 서식 문자열은 `"{0}{1:D2}/"`입니다. 여기서 각 중괄호 `{}` 안에 있는 숫자는 해당 위치에 전달되는 매개변수의 인덱스를 나타냅니다. 따라서 `"{0}{1:D2}/"`에서: - `{0}`는 첫 번째 매개변수를 나타냅니다. - `{1:D2}`는 두 번째 매개변수를 나타내며, `:D2`는 해당 매개변수를 10진수로 출력하되, 최소한 2자리로 출력하라는 의미입니다. 여기서: - `{0}`는 삼항 연산자 `(bIsOn ? "O" : "F")`의 결과에 해당..

C#/ PLC 제어 관련(가상 시뮬레이터 GX Works2)

1. 기본 환경 구성 https://hopot.tistory.com/358 [팁] Works2와 HMI(M2I/Proface) PLC없이 시뮬레이션 안녕하세요. 미쓰비시 PLC와 HMI(M2I, Proface)를 PLC 없이 연결하여 시뮬레이션 하는 방법을 공유합니다. 초보자들이 입문용으로 PLC없이 따라하면 좋을 것 같습니다. 1. 준비물 노트북 GX Works2 MX Componen hopot.tistory.com 2. 시작하기 https://mech19.tistory.com/45 MELSEC Q PLC 시작하기 (GX-WORKS2) 오늘은 일본 MITSUBISHI사의 MELSEC Q PLC시리즈의 소프트웨어인 GX-WORK2 사용법에 대해서 알아보겠습니다. ​ 사용하기 위해서는 먼저 설치를 해야겠지..

C#/ Tip 1

1. C#의 함수들은 대문자 시작(Main,,,)/ 자바는 소문자(main,,,) 2. 문자, 숫자 파싱 string str1; Convert.ToInt32(str1); str1.ToString(); 3. 상속 방법 C#은 class A : B 자바는 class A extends B 파이썬은 class A(B) 4. 오버라이딩(virtual 필요) virtual func(){}; override func(){}; 5. ? 관련 문법 1. ? nullable int? a = null; // 값 형식은 null이 될 수 없으나, ? nullable 타입 사용으로 가능. 2. 객체?.메서드 ArrayList a = null; a?.Add("1"); // 객체?.메서드느 null 조건부 실행 연산자 // 객체가..

C#/ 가상 키코드(virtual key)

https://learn.microsoft.com/ko-kr/windows/win32/inputdev/virtual-key-codes 가상 키 코드(Winuser.h) - Win32 apps 다음 표에서는 시스템에서 사용하는 가상 키 코드에 해당하는 기호 상수 이름, 16진수 값 및 마우스 또는 키보드를 보여 줍니다. 코드는 숫자 순서로 나열됩니다. learn.microsoft.com 가상 키 코드는 키보드의 각 키에 대한 고유한 식별자를 나타내는 정수 값입니다. 이러한 코드는 특히 Windows API와 같은 저수준 프로그래밍에서 사용됩니다. 몇 가지 이유로 인해 가상 키 코드를 사용하는 것이 편리할 수 있습니다: 1. **플랫폼 독립성:** 가상 키 코드를 사용하면 동일한 코드가 여러 플랫폼에서 동작..

C#/ unsafe 키워드

# `unsafe` 키워드 일반적인 안전한 언어 기능을 벗어나서 포인터 연산 및 포인터 산술을 수행할 수 있도록 하는 기능을 제공합니다. 이는 일반적으로 관리되는 환경에서 사용되는 안전한 언어로 개발되었지만, 특정 상황에서는 낮은 수준의 메모리 조작이 필요할 수 있기 때문입니다. `unsafe` 키워드를 사용하는 것은 보안 문제를 야기할 수 있으므로 주의해서 사용해야 합니다. 1. **포인터 조작:** 메모리 주소를 직접 조작하여 빠르게 데이터에 접근할 수 있습니다. 이는 성능 향상을 위해 일부 알고리즘에서 사용될 수 있습니다. unsafe { int x = 10; int* ptr = &x; Console.WriteLine(*ptr); // 포인터를 통해 변수의 값을 읽음 } 2. **외부 코드와의 상호..

C#/ FTP 파일 서버 사용하기

# 폴더 생성 public void CreateFtpDirectory(string ftpServer, string folderPath, string ftpUsername, string ftpPassword) { try { // FTP 전송 요청 FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpServer + folderPath); ftpRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword); ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;// 폴더 덮어쓰기 x // * (서버 폴더에 대해서) 폴더는 덮어쓰기가 안되어 에..

C#/ 디렉터리 및 파일 copy와 delete

# 디렉터리 및 파일 copy // 로컬 폴더 및 데이터 카피 로직(재귀적 생성) public void CopyDirectory(string sourceDir, string destDir) { try { if (!Directory.Exists(destDir)) { Directory.CreateDirectory(destDir); } foreach (string file in Directory.GetFiles(sourceDir)) { string destFile = Path.Combine(destDir, Path.GetFileName(file)); File.Copy(file, destFile, true); // true: 덮어쓰기 허용 } foreach (string subDir in Directory.Ge..