본문 바로가기

컴퓨터/Delphi

델파이 uses 이름 표 델파이 관련 글을 찾다보면, 옛날 델파이 프로그램과 최신과의 차이가 여럿 발생해 혼란을 겪는데, 최근까지도 구형 버전도 많이 쓰이다보니 좋은 팁이지만 업로더도 뭐가 문제인지 모를 때가 간혹 있다. 이 표는 구형과 신형(정확한 경계는 모르겠으나)의 uses 에서의 명칭 차이를 개발하면서 발견하는 것 하나 하나 비교표로 만들고자 한다. 예를 들어, messages 를 그냥 uses 해도 사용엔 문제가 없지만, 디버깅 시 라이브러리를 찾지 못해 함수의 원형을 볼 수가 없다. 그러나 Winapi.messages 로 호출할 경우 ide 상에서 곧바로 원형과 그 동작을 살펴볼 수 있다. 구버전 신버전 Messages Winapi.Messages ShellApi Winapi.ShellApi 더보기
[Delphi] 프로그램 현재 경로 확인 프로그램 패키지 내 특정 파일을 로드해야 하는 경우, 아래 코드로 현재 프로그램이 실행된 실제 경로를 취득할 수 있음. ExtractFilePath(Application.ExeName) 더보기
[C포팅] 델파이로 익명 공용체 포팅 방법 최근 한 프로젝트로 인해 C언어 라이브러리를 델파이로 포팅할 일이 있었다. 대부분 구글링을 통해서 쉽게 변환할 수 있었는데 익명 공용체의 포팅에서 쉽게 알기 어려웠던 점이 있어 포스팅으로 남긴다. 먼저 구조체는 아래와 같이 사용된다. C Style Delphi Style struct MyStruct { int a; char b; double c;} MyStruct = record a:integer; b:char; c:double; end; 그리고 공용체는 아래와 같이 사용된다. C Style Delphi Stylestruct MyStruct { union { int a; char b; double c; } u;}MyStruct = record case Integer of 0: (a:integer); 1:.. 더보기
[QuantumGrid] CheckBox 사용 퀀텀그리드를 사용하기 위해 학습하면서 체크박스 사용이 필요할 경우, cxgrid 선택 후 Data Controller.DataModeController.GridMode property = FalseData Controller.DataModeController.SmartRefresh property = TrueData Controller.KeyFieldNames property = UniqueField 명 설정(PrimaryKey 등) View 선택 후 36800 View -> Column 선택 후 DataBinding.FieldName property = nullDataBinding.ValueType = BooleanProperties property = CheckBoxProperties.NullStyl.. 더보기
이상한 Undeclared 델파이는 잘 만든듯 하면서 엉뚱한데서 허술하다. 예를들어 요즘엔 당연시 되는 자동 uses 따위 없다. 컴포넌트를 올리고 저장하면 그 부분은 자동으로 되지만 함수나 클래스를 당겨올 경우는 자동 uses 가 안된다. 데브기어 측에서는 여러가지 말을 해줬지만 그냥 결론은 엠바가 이걸 만들줄 모른다 라고 밖에 안들린다. 철학은 무슨 델파이 기본이 빠른 생산성인데 uses 해야할 라이브러리 찾아 다니다가 시간만 다 잡아먹는다. 이상한데서 개발 능력이 떨어지는 엠바가 또 한가지 버그가 있는데 기본 클래스가 ide에서 에러로 걸린다는 거다. 이건 진짜 내가 쓰는 도쿄버전에 국한된 문제가 아니라 전의 전의 전의 전의 내가 델파이를 처음썼던 xe2부터 이미 보고가 된 것인데 고치지 못했다는건 엠바 IDE 개발 수준은 .. 더보기
[Component] Indy 에서 예외처리 하기 델파이는 Try ... except ... end 로 예외처리를 지원하고 있고 Indy 또한 Error Exception을 지원합니다.하지만 예전에는 Indy의 exception이 IdException에 정의되어 있었습니다.하지만 지금은 IdException을 uses 하면 파일이 있다고 나오지만 예전 코드나 예제는 더이상 사용할 수 없습니다. 왜냐하면 에러 정의가 IdException이 아닌 IdStack으로 옮겨졌기 때문입니다. 그래서 옛날 코드나 예제를 사용하면 특정 인디 버전부터는 E2003 Undeclared identifier 에러가 발생합니다.델파이는 대부분의 예제가 08년 09년을 기점으로 그 이전에 많이 기록이 남아 있습니다. 이제는 인디 컴포넌트의 예외처리를 하려면 IdStack을 us.. 더보기
TAlphaColor의 색상 표현 TRectangle, TEdit... 등등 TBrush나 기타 TAlphaColor를 프로퍼티로 갖는 객체의 색상 값은 일반적으로 BGR코드를 사용합니다. BGR코드란? 일종의 RGB 컬러와 같이 적색, 녹색, 청색의 조합으로 색을 표현하는 방식입니다. 쉽게 풀이하자면 RGB의 색상 배치를 프로그램이나 그 색상을 처리하는 코드의 처리 순서에 맞게 변경한 것으로 델파이는 BGR, 즉 청색, 녹색, 적색 순서로 색상을 입력받습니다. RGB계열 컬러에 대한 색상표는 이곳을 참고하세요. http://zapmap.com/colors/bgr.html 델파이는 RGB코드가 아닌 BGR코드를 사용하며 #RRGGBB가 아닌 $LLBBGGRR형식을 따릅니다. 기존에 웹이나 포토샵을 많이 다루던 분들은 생소한 포맷이나 기존.. 더보기
TEdit 클릭 시 내용 지워지기, 다시 나타내기 TEdit은 단일 라인의 입력 컴포넌트로 많이 쓰이는 컴포넌트입니다.TEdit은 기본적으로 네모 박스 하나만 나오고 이것이 무슨 값을 취하려는지 나오지 않습니다. 이렇게 네모 박스만 생기죠. 그래서 이 박스가 무엇인지를 위해 앞에 TLabel을 달거나 이미지를 붙여줍니다. 하지만 이렇게 하면 VCL이나 PC같이 큰 화면에서는 문제가 없지만 FMX에서는 가용 면적이 줄어드는 역효과가 있습니다.이를 위해 델파이는 TLabel이 아닌 TEdit의 TextPrompt 프로퍼티가 정의되어 있습니다.이 프로퍼티는 Prompt 즉, 해당 TEdit에 사용자가 입력한 내용과 별개로 배경처럼 해당 TEdit이 무엇을 입력받으려는지를 명시해주는 역할을 합니다. 이렇게 TEdit을 선택한 뒤, 해당 TEdit에서 입력받을 .. 더보기
[FMX][Timage] 이미지 복사 델파이 FMX에서 이미 생성된 TImage의 이미지를 다른 TImage(또는 TBitmap도 되는 것 같다.) 로 복사할 때MultiResBitmap 프로퍼티나 CopyFromBitmap 에서 헤메지 말고 TImage.Bitmap.Assign(TargetImage.Bitmap); 으로 한방에 해결할 수 있다. 더보기