본문 바로가기

Delphi127

시스템 정보 가져오기 시스템 정보 가져오기 델파이에서는 GetSystemInfo 함수를 사용하여 시스템 정보를 가져올 수 있습니다. 이 함수를 통해 프로세서, 메모리, 페이지 파일 및 기타 시스템 리소스에 대한 정보를 얻을 수 있습니다. 아래의 예제는 GetSystemInfo 함수를 사용하여 시스템 정보를 가져오는 방법을 보여줍니다. program SystemInfoExample; {$APPTYPE CONSOLE} uses Windows; procedure GetSystemInformation; var systemInfo: TSystemInfo; begin // 시스템 정보 가져오기 GetSystemInfo(systemInfo); // 시스템 정보 출력 Writeln('시스템 정보:'); Writeln('-----------.. 2023. 6. 15.
메모(TMemo) 팁 TMemo 팁 델파이에서 TMemo는 텍스트 기반 멀티라인 에디트 컨트롤입니다. 이 컨트롤을 사용하면 사용자가 여러 줄의 텍스트를 입력하고 편집할 수 있습니다. TMemo는 다양한 속성과 이벤트를 제공하여 텍스트의 표시 및 편집을 제어할 수 있습니다. 일반적으로 TMemo 컨트롤은 대화형 애플리케이션에서 텍스트 입력 또는 출력에 사용됩니다. 예를 들어, 사용자가 메모를 작성하거나 텍스트 문서를 편집하는 등의 작업에 유용합니다. TMemo의 중요한 속성 중 일부는 다음과 같습니다 Lines Lines 속성은 TMemo에 표시되는 텍스트의 줄 목록을 나타냅니다. 이 속성을 통해 텍스트를 프로그래밍 방식으로 설정하거나 읽을 수 있습니다. Text Text 속성은 TMemo의 전체 텍스트 내용을 가져오거나 설정.. 2023. 6. 14.
런타임시에 컴퍼넌트 이동,크기조절 런타임시에 컴퍼넌트 이동,크기조절 PostMessage( Panel1.Handle, WM_SYSCOMMAND, $F012, 0 ); 여기서, $F012 대신에 아래와 같은 값들을 써보세요. $F001 ; 우측 고정 리사이징 $F002 ; 좌측 고정 리사이징 $F003 ; 하단(only) 고정 리사이징 $F004 ; 우하단(only) 고정 리사이징 $F005 ; 좌하단(only) 고정 리사이징 $F006 ; 상단(only) 고정 리사이징 $F007 ; 우상단(only) 고정 리사이징 $F008 ; 좌상단(only) 고정 리사이징 $F009 ; 이동 $F012 ; 이동 2023. 6. 13.
델파이 객체지향이란?(2) 델파이 객체지향이란?(2) 1. Object의 기본 개념 Object는 데이타와 이와 관련된 procedure를 한데 묶어 표현한 소프트웨어 패키지이다. 이는 현실세계가 처리중심이 아닌 사물(객체 : Object)중심으로 이루어졌다는데에 바탕을 둔 것이다. 세포(cell)를 예로 들어 생각해 보자 세포는 핵, 키토콘드리아, 세포질, 세포막 등으로 이루어 졌는데, 이러한 세포의 구성 요소들에게는 각각의 역활이 주어져 있다. 그러나 다른 기관의 입장에서 살펴보자. 세포의 구성 요소들이 어떠한 일들을 하는지는 그다지 중요한 사실이 아니다. 단지 단백질이나 무기질을 세포내로 전달해 주면, 세포는 그것들을 가지고 자신의 임무만을 수행하면 되는 것이다. 세포내에 어떠한 구성원들이 있는지는 알 필요도 없고, 단지 세.. 2023. 6. 12.
클래스란? 클래스란? 클래스는 객체지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 코드의 재사용성과 유지 보수성을 향상시키는 데 도움을 줍니다. 델파이에서 클래스를 사용하면 더욱 효율적이고 구조화된 프로그램을 개발할 수 있습니다. 클래스란 무엇인가요? 클래스는 데이터와 그 데이터를 조작하는 메서드를 포함하는 하나의 개체(object)입니다. 클래스는 현실 세계의 객체를 모델링하며, 해당 객체의 특징과 동작을 정의합니다. 예를 들어, "사람" 클래스는 이름, 나이, 성별 등의 데이터와 "인사하다", "먹다" 등의 동작을 가질 수 있습니다. 클래스의 구성 요소 클래스는 속성(프로퍼티)과 동작(메서드)으로 구성됩니다. 속성은 클래스의 데이터를 나타내며, 동작은 데이터를 조작하고 사용하는 방법을 정의합니다. 이러한 구성.. 2023. 6. 5.
StringGrid의 Cell에 입력 값 제한 StringGrid의 Cell에 입력 값 제한 하기 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; tmpText, cellText.. 2023. 6. 2.
델파이 속성(Property) 이해하기 객체 지향 프로그래밍에서의 활용과 장점 델파이 속성(Property) 이해하기 객체 지향 프로그래밍에서의 활용과 장점 델파이(Delphi)는 Object Pascal을 기반으로 한 강력한 프로그래밍 언어로, 객체 지향 프로그래밍(OOP)을 지원하는 대표적인 언어 중 하나입니다. OOP는 코드의 재사용성, 유지 보수성 및 가독성을 향상시키기 위한 강력한 개념을 제공합니다. 이 중 하나인 속성(Property)은 객체 지향 프로그래밍에서 중요한 개념으로, 이번 포스팅에서는 델파이의 속성에 대해 자세히 알아보겠습니다. 속성(property) 한 클래스에서 속성(property)은 그 클래스의 정적인 특성을 나타냅니다. 사람을 예로 든다면 이름, 키, 몸무게, 성별, 생년월일 등과 같은 것이 사람 을 나타내는 속성이 될 수 있습니다. 이 속성은 한 .. 2023. 6. 1.
델파이 객체지향이란? 델파이 객체지향이란 안녕하세요 ^^ ​ OOP, 즉 객체지향이라는 말 많이 들어보셨죠? 저는 델을 1년정도 사용했는데 따지고 보니깐, 델파이가 객체지향 파스칼이라는걸 알면서도 그저 파스칼의 기본 문법만을 가지고 프로그래밍했던 것같아요. ​ 객체지향이라는 향상된 개념을 마다하고 도스에서 C를 쓰듯이 생각없이 짜다보니 어휴... 1000줄만 넘어가면 이게 무슨 말인지... 도스에서도 C++컴파일러를 이용하기는 했지만 그저 C++을 빙자한 C프로그램을 했던것 같아요... 요즘 깨달았죠.. 개념자체를 바꿔야겠다고... 그리고 결심했죠... 객체지향적인 프로그램을 짜자고... ​ 하지만 도대체 객체지향이란 무엇인지? 출간되는 책들을 보면 보통 객체지향 언어의 사용법에 대한 책들만 있지 개념자체를 설명해주는 책은 .. 2023. 5. 31.
쓰레드 추가설명 델파이 쓰레드 객체는 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.
열거형의 사용방법 열거형의 사용방법 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; Panel1: TPanel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} type { 열거형을 정의한다 } DayOfWeek = (Mon, .. 2021. 10. 8.
델파이 쓰레드(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.
초를 시간 분 초 형식으로 리턴 초를 시간 분 초 형식으로 리턴 //초를 입력하면 0시간 0분 0초 식으로 리턴한다 //ex: 4600 -> 1시간 16분 40초 function GetTimeToStr(sec : double) : string; function GetDigit(num : integer):string; var sss : string; begin sss := inttostr(num); if length(sss) = 1 then result := '0' + sss else result := sss; end; function LeftStr(const Str: string; Size: Word): string; begin LeftStr := Copy(Str,1,Size) end; var rsec, hhour, mmin, ssec.. 2021. 7. 22.
델파이 RTF (Rich Text Format) 사용방법 델파이 RTF (Rich Text Format) 사용방법 서식있는 텍스트 형식 의 약자인 RTF 란? 서식있는 텍스트 파일과 일반 텍스트 파일의 혼합 텍스트 파일과 달리 RTF 파일은 굵게, 기울임 꼴, 밑줄, 글 머리 기호, 다른 글꼴 및 텍스트 양쪽 맞춤과 같은 일부 서식 지정 기능을 제공합니다. 그러나 전체 워드 프로세서에있는 모든 기능을 제공하지는 않습니다. RTF 편집기의 예는 Microsoft WordPad입니다. 그러나 모든 텍스트 또는 워드 프로세서 프로그램은 RTF 문서를 만들 수있는 위에서 언급 한 서식 지정 기능을 사용하여 문서를 만들 수 있습니다. 일반 텍스트를 RTF 파일로 변환하는 방법 WordPad 또는 Microsoft Word와 같은 RTF 편집기에서 파일 일반 텍스트 파일.. 2021. 7. 21.
델파이 JSON to Object 한줄 델파이 JSON to Object 한줄 uses REST.JSON; // Also new System.JSON TFoo = class private FFee : Integer; FFoo : string; published property Foo : String read FFoo write FFoo; property Fee : integer read FFee write FFee; end; procedure TForm1.Button1Click(Sender: TObject); var Foo: TFoo; begin Foo := TFoo.Create; try Foo.Foo := 'Hello World'; Foo.Fee := 42; Memo1.Lines.Text := TJson.ObjectToJsonString(F.. 2021. 7. 20.