Clover
article thumbnail
[Delphi/델파이] ADOConnection 사용 시 exe(실행파일) 실행안되는 경우.
Delphi 2022. 9. 17. 16:22

업무상 메인으로 유지보수중인 시스템이 있는데, 특정 폼을 수정하고나면 프로그램 exe가 실행 자체가 안되는 경우가 종종 있었다. 특이한건 개발PC 에서는 아무 탈 없이 실행이 되는데, 클라이언트 PC에서만 실행이 안된다는것.. 원인을 찾으려고 약 이틀간 삽질한 결과.. 그 '특정' 폼에 사용된 ADOConnection 의 속성값이 문제였다. 프로그램에 ADOConnection과 ADOQuery가 떡칠(...)이 되어있는데, 사용된 ADOConnection 들 중 하나에만 Connected 속성값이 True로 되어 있었다. 위 이미지의 Connected 속성이 True 로 되어있었다. 이게 어디에 써먹는건지도 여태 몰랐는데, 이번 기회에 특징을 조금 알게 되었다. 우선 저게 체크되어있으면, 델파이로 소스를..

article thumbnail
[델파이/Delphi] Directory 내용 불러오기, File 내용 추출하기 예제
Delphi 2022. 2. 17. 11:42

[델파이/Delphi] Directory 내용 불러오기, File 내용 추출하기 예제 업무상 3,200개 정도 되는 .txt 파일에서 특정 문자열이 있는 라인을 전부 뽑아내야 하는 상황이 생겼다. 그래서 델파이로 지정한 경로의 파일 리스트를 불러오고, 파일들의 내용을 추출해내는 간단한 예제 코드를 만들어보았다. (다행히도, 모든 파일이 정해진 양식대로 작성되어 있어서 쉽게 데이터를 추출해낼 수 있었다.) TFileOpenDialog * TOpenDialog의 상위 버전으로, Window Vista 이후 버전부터 사용할 수 있는 Dialog Component이다. 따라서 Windows XP를 지원해야 하는 경우에는 TOpenDialog를 사용해야 한다. ** Vista 이후의 버전에서 TOpenDialog..

article thumbnail
[델파이/Delphi] 자료구조 - Queue
Delphi 2022. 1. 19. 13:50

[델파이/Delphi] TQueue 사용 예제 델파이에서 큐(Queue)를 사용하려면 TQueue 클래스를 사용하면 된다. TQueue 클래스는 System.Generics.Collections 유닛에 포함되어 있고, 제너릭(Generic)을 사용하여 설계되어 있으므로 다음과 같이 선언해서 사용하면 된다. var QueueS :TQueue; QueueI :TQueue; ... 그리고 엠바카데로 공식 Wiki에 간단한 예제를 함께한 설명이 있어서 참고하였다. 엠바카데로 Wiki - Delphi(TQueue) : https://docwiki.embarcadero.com/CodeExamples/Sydney/en/Generics_Collections_TQueue_(Delphi)

[델파이/Delphi] 시간 측정 - TStopWatch
Delphi 2021. 12. 14. 10:40

[델파이/Delphi] 프로세스 동작 시간 측정하기 - TStopWatch 예제 프로세스의 동작 시간을 측정, 비교하기 위한 TStopWatch API 예제. - 코드 : procedure StopWatch; var stopWatch :TStopWatch; //System.Diagnostics elapsed: TTimeSpan; //System.TimeSpan i :integer; seconds :Double; begin try stopwatch := TStopwatch.StartNew; for i := 0 to 1000000 do begin //doSomething.. end; elapsed := stopwatch.elapsed; //stopWatch 의 시간 경과를 elapsed 객체에 저장. sec..

article thumbnail
[델파이/Delphi] TStringBuilder
Delphi 2021. 12. 14. 10:03

[델파이/Delphi] TStringBuilder를 사용하는 이유 & 간단 사용법 델파이는 2009 버전부터 StringBuilder를 공식적으로 지원한다. (Java의 StringBuilder와 같은 개념) StringBuilder를 사용하는 이유 Buffer Size 일반적으로, Java 환경에서 StringBuilder를 사용하는 대표적인 이유이다. 아래 Java 코드에서 메모리의 Stack 영역과 Heap 영역의 상태 변화는 다음과 같다. String temp = "Hello"; 그리고 temp 변수에 " World" 라는 String을 이어붙이게 되면, String temp = "Hello"; temp += " World"; 결국 "Hello" 라는 String 객체가 존재하는 Heap 영역은 ..

[델파이/Delphi] Generic(제네릭) 간단 사용 예제
Delphi 2021. 11. 27. 15:21

Generic(제네릭) 간단 사용 예제 델파이는 [델파이 2009] 버전부터 Generic(제네릭)을 지원하기 시작했다. 제네릭의 장점 - 컴파일 단계에서 타입 체크를 한다. 따라서 incompatible type error를 방지할 수 있다. - 타입을 미리 지정하기 때문에, 하위 코드에서 형변환 횟수를 줄일 수 있다. - 코드의 재사용성을 높일 수 있다. 자바의 그것과 유사하게 디자인되어 있으므로, 자바를 먼저 공부한 사람들이라면 쉽게 이해하고 사용할 수 있을 것이다. 제네릭 클래스 선언 방법 1 2 3 4 5 6 7 8 TSample = class // T : Type. Object type도 인자로 받을 수 있다. private FValue :T; public function GetValue :T..

[델파이/Delphi] TStringList - Delimiter & LineBreak, CommaText 예제
Delphi 2021. 11. 22. 20:00

[델파이/Delphi] TStringList - Delimiter & LineBreak, CommaText 예제 # TStringList.Delimiter - 구분자를 이용하여 문자열을 분할할 때 사용한다. - 주의점은 문자열 내의 공백값을 자동으로 분할시킨다는 것. - "Delimiter"는 [Char] 타입이라서 한번에 여러개의 구분자를 입력할 수 없다. procedure Delimiter; var sList :TStringList; begin try sList := TStringList.Create; sList.Delimiter := '|'; sList.DelimitedText := 'AAA|BB B|CCC|DDD|EEE'; //값 대입과 동시에 분할이 이루어진다. Memo1.Lines.Clear;..

[델파이/Delphi] 숫자 or 문자 제거하기
Delphi 2021. 11. 16. 17:16

델파이(Delphi) String 변수값에서 숫자 or 문자 제거하기 String 변수값에서 숫자 혹은 문자를 골라내서 삭제할 수 있는 간단한 메서드 ※ 소스코드 출처 : https://stackoverflow.com/questions/10838468/delete-numbers-from-a-string Delete numbers from a String I'd like to know how I can delete numbers from a String. I try to use StringReplace and I don't know how to tell the function that I want to replace numbers. Here's what I tried: StringReplace(mS... ..

[델파이/Delphi] 열거형(Enum) 사용 예시
Delphi 2021. 11. 1. 12:05

델파이의 열거 타입(Enumerated type) 의 사용 방법에 대한 예제 코드 ※ 선언 방법 type TMyColor = (mcRed, mcBlue, mcYellow = 5, mcBlack = mcBlue + mcYellow); - "TMyColor" 라는 이름의 열거 타입(Enumerated type)을 정의한다. - 숫자 0부터 증가하는 index type과 동일하게 참조하여 사용할 수 있다. - 필요에 따라 index 값을 특정 값으로 지정해놓을 수 있다. ※ 사용 예시 - 숫자 0부터 증가하는 인덱스 타입이므로, 다음과 같이 참조할 수 있다. var eColor : TMyColor; begin eColor := TMyColor(1); //mcBlue end; - Enum 타입을 활용할 때는 c..

article thumbnail
[델파이/Delphi] "Interface not supported" 에러 (ExcelExport)
Delphi 2021. 10. 26. 11:24

델파이 Excel or Word Export 시, "Interface not supported" 에러 해결방법 ※ 에러 발생 원인 PC에 구버전 혹은 신버전의 오피스 프로그램이 완전히 삭제가 되어있지 않은 경우 발생함. (The problem was that the previous version of Excel was uninstalled incorrectly on the machine) ※ 해결 방법 레지스트리 에디터 실행. - [윈도우 + R] - [regedit] 입력 경로 진입 - HKEY_CLASSES_ROOT >> TypeLib >> {00020813-0000-0000-C000-000000000046} 설치된 MS Office 버전과 다른 버전 폴더 삭제. ※ MS Office 버전별 레지스트..

article thumbnail
[Delphi/델파이] 최근 에러 조회하기 - GetLastError
Delphi 2021. 10. 15. 17:51

GetLastError 가장 최근 발생한 에러에 대한 에러코드를 리턴해준다. 그리고 에러 코드 내용을 변환하여 보여주는 "SysErrorMessage" function도 있다. 아래처럼 사용하면 된다. sError := SysErrorMessage(GetLastError); 에러코드에 대한 설명은 아래 MSDN 링크에 있는데, 자세한 설명이 필요할 때만 참고하면 될 것 같다. 시스템 오류 코드(0-499)(WinError.h) - Win32 apps 시스템 오류 코드(0-499)(WinError.h) - Win32 apps WinError.h 헤더 파일에 정의된 오류 코드 0-499를 설명하며 개발자를 위한 것입니다. docs.microsoft.com