본문 바로가기

Delphi/클래스11

시스템 정보 가져오기 시스템 정보 가져오기 델파이에서는 GetSystemInfo 함수를 사용하여 시스템 정보를 가져올 수 있습니다. 이 함수를 통해 프로세서, 메모리, 페이지 파일 및 기타 시스템 리소스에 대한 정보를 얻을 수 있습니다. 아래의 예제는 GetSystemInfo 함수를 사용하여 시스템 정보를 가져오는 방법을 보여줍니다. program SystemInfoExample; {$APPTYPE CONSOLE} uses Windows; procedure GetSystemInformation; var systemInfo: TSystemInfo; begin // 시스템 정보 가져오기 GetSystemInfo(systemInfo); // 시스템 정보 출력 Writeln('시스템 정보:'); Writeln('-----------.. 2023. 6. 15.
클래스란? 클래스란? 클래스는 객체지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 코드의 재사용성과 유지 보수성을 향상시키는 데 도움을 줍니다. 델파이에서 클래스를 사용하면 더욱 효율적이고 구조화된 프로그램을 개발할 수 있습니다. 클래스란 무엇인가요? 클래스는 데이터와 그 데이터를 조작하는 메서드를 포함하는 하나의 개체(object)입니다. 클래스는 현실 세계의 객체를 모델링하며, 해당 객체의 특징과 동작을 정의합니다. 예를 들어, "사람" 클래스는 이름, 나이, 성별 등의 데이터와 "인사하다", "먹다" 등의 동작을 가질 수 있습니다. 클래스의 구성 요소 클래스는 속성(프로퍼티)과 동작(메서드)으로 구성됩니다. 속성은 클래스의 데이터를 나타내며, 동작은 데이터를 조작하고 사용하는 방법을 정의합니다. 이러한 구성.. 2023. 6. 5.
쓰레드 추가설명 델파이 쓰레드 객체는 TThread 객체를 상속 하고 필요한 실행 코드는 Excute 를 오버라이드하여 구현하며 생성후 Resume 하여 작업을 시작한다. type TExThread = class(TThread) protected procedure Execute; override; end; { TExThread } procedure TExThread.Execute; begin inherited; while not Terminated do begin Synchronize( procedure() begin frmHillThread.mConsole.lines.Add('Time:' + TimeToStr(Now)); end); Sleep(1000); end; end; Thread 기본 사용법 Thread prio.. 2022. 3. 23.
익명함수+스레드를 활용한 간단한 스레드 사용 방법 익명함수 스레드를 활용한 간단한 스레드 사용 방법 기존에는 TThread를 상속하여 구현하였기에 초보시절엔 접근도 어렵고 잠깐 쓰레드가 필요한 시점에서의 활용도 번거로웠습니다. 다행히 델파이 2010버전부터 익명함수가 제공되었는데 덕분에 쓰레드를 아주 손쉽게 사용할 수 있습니다. 다만, 여기서는 자세히 설명할 순 없지만 안전한 쓰레드 사용을 위해 크기 2가지를 지켜야 합니다. 1) 쓰레드의 begin ~ end 블록 사이에서 UI를 조작(변경, 수정, 삭제등)할때는 Syncronize를 이용한다. 2) 다른 쓰레드와 동시에 같은 자원(변수, 클래스등)을 공유(동시에 읽거나 쓰는 행위, 포인터를 참조하는 행위)하지 않는다. 간단한 예제입니다. 1. 100ms 타이머 만들기 델파이 기본 타이머는 윈도우 이벤.. 2022. 1. 24.
멀티스레드 GUI 동기화 멀티스레드 GUI 동기화 일반적인 Delphi 애플리케이션은 단일 스레드이므로 모든 VCL 객체가 속성에 액세스하고이 단일 스레드 내에서 메서드를 실행합니다. 애플리케이션에서 데이터 처리 속도를 높이려면 하나 이상의 보조 스레드를 포함하십시오. 프로세서 스레드 스레드 프로세서에 응용 프로그램의 통신 채널이다. 단일 스레드 프로그램은 실행시 양방향으로 (프로세서에서) 양방향으로 통신해야합니다. 다중 스레드 앱은 여러 채널을 열 수 있으므로 실행 속도가 빨라집니다. 스레드 및 GUI 애플리케이션에서 여러 스레드가 실행 중일 때 스레드 실행의 결과로 그래픽 사용자 인터페이스를 업데이트 할 수있는 방법에 대한 의문이 생깁니다. 대답은 TThread 클래스 Synchronize 메서드에 있습니다. 보조 스레드에서.. 2022. 1. 14.
델파이 쓰레드(Thread)의 기초 델파이 쓰레드(Thread)의 기초 쓰레드.. 아직 윈32하에서, 그리고 빌더에서(혹은 델파이에서 쓰레드)를 써보지 않으신 분들은 이 쓰레드라는 녀석에 대해 상당한 본능적인 공포를 가지고 계신 분도 있을겁니다. (사실 접니다... --) 도스시절에 멀티쓰레드 어플을 만드는 것은 거의 예술의 경지였죠. 아주 가끔씩 통신망에 올라오는 '멀티쓰레드 XXX' 혹은 '멀티태스킹 XXX'를 볼때마다 (여기서 XXX를 이상하게 해석하지 마세요..) 제 눈은 존경과.. 시기와.. 경외감에 차다 못해 두려움마저... 흑흑~~~ 하쥐만~! 지금은 X나 X나(포유류 이름) 맘만 먹으면 아무라도 쓰레드를 만들고 \또 재밌게 갖고 놀다가 없애버릴 수 있는 아주 부담없는 개념이 되었죠. 물론 api 수준의 쓰레드 지원도 볼만합니.. 2021. 8. 7.
델파이 레코드 클래스 성능 비교 델파이 레코드 클래스 성능 비교 전통적으로 구조체는, 그러니까 c++의 스트럭트는 변수들만 담을 수 있어 왔다. 그러나 최근의 델파이나 .넷은 구조체에 프라퍼티와 메떠드도 담을 수 있게 되어서 구조적으로 클래스와 차이가 없어졌다. 그러나 기능적으로는 이들 사이에 큰 차이가 있는데 구조체는 밸류 타입이고 클래스는 레퍼런스 타입이다. 일반적으로 구조체보다는 클래스를 쓰는 게 좋다. 구조체를 메떠드의 매개변수로 설정하거나 아래 예제처럼 List.Items로 접근하면 이 값이 내부적으로 복사되므로 부하가 커진다. 주소로 직접 접근할 수 없으니 일단 가져다 놓고 쓰는 거다. 물론 매개변수 앞에 var를 붙이거나 리스트를 아래 예제처럼 이용하면 이런 문제를 피할 수 있기는 하다. 클래스는 레퍼런스 타입이므로 포인터.. 2021. 8. 5.
델파이 TDictionary / TObjectDictionary 델파이 TDictionary TObjectDictionary 사용 완료후 아이템 메모리 해제 델파이 2009에 새로 추가된 TDictionary 클래스 입니다. 우선 클래스는 Generics.Collections 에 들어 있습니다. 소스를 보시면 TDictionary 이런 형태로 정의가 되어 있습니다. 사용법은 hash table과 거의 흡사하다고 보시면 됩니다. key값과 value가 변경될때 이벤트도 발생 시켜 주기 때문에 이벤트를 연결해서 사용할 수도 있습니다. hash table과 검색 속도를 비교해 봤는데 데이터가 많아질수록 이 클래스가 빨랐습니다. 뭐 hash table도 데이터가 많아질때 좋은 속도를 낸다는 점에서는 비슷하기는 하지만 어쨌든 제가 테스트한 hash table과 Dictiona.. 2021. 8. 4.
델파이 클래스 메소드 사용방법 델파이 클래스 메소드 사용방법 ( 1 ) 아래와 같이 class를 하나 만들어봅니다. * 일반 메소드는 function, procedure로 시작하지만 클래스 메소드는 function, procedure 앞에 class라고 붙이기만 하면 됩니다. ( 2 ) 위에서 만든 클래스를 사용하는 예제 프로그램을 작성해봅니다. ( 3 ) 실행 결과입니다. 간단한 예제를 통해서 일반 메소드와 class 예약어를 함수나 프로시져 앞에 붙인 클래스 메소드 (Class Method)의 차이점을 파악해봤습니다. 보통 class를 선언할 때는 TMyClass라고 T를 앞에 붙이는데 간혹 어떤 소스를 붙이면 인스턴스 생성 없이 T가 붙은 클래스의 메소드를 바로 호출하는 게 보입니다. 이런 경우는 클래스 메소드를 선언해놓고 호출.. 2021. 8. 3.
델파이의 클래스 헬퍼(helper) 델파이의 클래스 헬퍼(helper) 델파이의 최근 버전에 추가되었지만 개발자들이 잘 모르고 있는 기능들이 꽤 많은데요. 숙련된 델파이 개발자들까지도 델파이 7 이하까지의 문법에만 익숙한 경향이 있습니다. 하지만 구버전 문법으로 구버전처럼 사용한다면 최신 버전을 사용하는 장점이 반감되지 않겠습니까. 그래서, 델파이 개발자들이 잘 모르고 있는 아주 유용한 기능들을 시간이 되는 대로 하나씩 소개해볼까 합니다. 이번에 소개하는 클래스 헬퍼는 델파이 2006에서 추가된 언어 기능으로, 기존의 클래스를 수정하지도 상속하지도 않고 클래스의 기능을 확장할 수 있게 해줍니다. 클래스를 많이 다루는 경력 개발자분들은 이 말만 듣고도 우와~ 할 것 같습니다. 이런 필요가 있는 경우가 꽤 흔하거든요. 클래스 헬퍼 자체도 하나.. 2021. 8. 2.
델파이 쓰레드 사용법 델파이 쓰레드 사용법 1. 쓰레드란 무엇인가? A 라는 프로그램과 B 라는 프로그램이 실행중에 있다. 이러한 경우 A 프로그램에서 B 프로그램의 전역변수에 접근할 수 있는가? 물론 불가능하다. 이것이 가능하다는 것은 여러분이 즐기고 있는 벽돌깨기 프로그램이 MP3 플레이어 프로그램의 메모리 영역에 접근할 수 있다는 소리와 같은 것이다. 프로세스마다 독립적으로 메모리를 유지하기 때문에 이러한 일은 불가능하다. 부모 프로세스가 자식 프로세스를 생성하는 경우도 이와 같다. 생성되는 모든 자식 프로세스는 자신만의 독립적인 메모리 공간을 소유하게 된다. 그러나 쓰레드를 생성하게 되는 경우, 스택(Stack) 메모리 공간만 독립적으로 유지하게 되며 일반적인 나머지 메모리 영역은 공유된다. 일단은 프로그램상에서 쓰레.. 2021. 5. 21.