델파이의 최근 프로젝트/즐겨찾는 프로젝트 경로 변경

No Comments

패러렐즈 10으로업그레이드 하고 나니 가상머신의 공유 폴더가 하나 더 늘어나서 소스와 VCL 소스 경로가 모두 변경되버렸고

최근 프로젝트 목록, 즐겨 찾기 프로젝트 목록 등이 무용지물이 되버려서 여러가지로 귀찮게 되버렸습니다…

일일이 하나씩 프로젝트 열어서 목록 재작성 하기는 엄두가 안나고 해서 검색을 좀 해봤더니 레지스트리나 설정 파일을 직접 편집하면 되더라구요…

 

기억을 위해 남겨둡니다…

 

Recent Projects 목록은

레지스트리 HKEY_CURRENT_USER\Software\Embarcadero\BDS\x.0\Closed Projects 아래에 하나씩 등록되어 있습니다.

 

Favorites Projects 목록은

C:\Users\<User Name>\AppData\Roaming\Embarcadero\BDS\x.0

폴더에 있는 myFavorites.xml 파일을 직접 편집하면 됩니다…

 

추가:

좀 더 상세하게 정리해 놓은 글이 있네요…

Files in your Delphi settings directory; How to relocate the Favourites on your Welcome page

CoInitFlags와 TOpenDialog

No Comments

음~~ 반갑지 않은 기술 COM…

 

AcroEdit 0.9.25.114 버전을 배포하면서 이전과는 달리 이 버전부터 메인 개발툴로 Delphi 2007을 사용하고 있습니다.

이전에 사용하던 Delphi 6도 별 문제는 없는데 여러가지 사소한 것들때문에 갈아타기로 했습죠…

후다닥 갈아탄 후에  0.9.25.114 버전을 배포했고 AcroDiff에서 파일 열기를 하면 프로그램이 얼어버린다는 피드백이 바로 들어옵니다. 

 

어라~~ 이게 왜 이러냐… 하고 한참을 뒤져보는데 AcroEdit는 아무런 문제가 없고 유독 AcroDiff에서만 발생하고 있는겁니다.

여러가지로 검색해 본 결과 COM 문제라는 결론에 이르게 되는데…

시스템 대화상자가 COM을 기반으로 하고 있으며 COM 쓰레딩 모델 중 STA, MTA 모두 지원한다고 알고 있고 AcroEdit, AcroDiff 모두 프로그램 시작 시 COM 쓰레딩 모델을 COINIT_MULTITHREADED로 설정하고 있습니다.

프로젝트 소스의 Application.Initialize; 구문 전에 CoInitFlags := COINIT_MULTITHREADED; 를 넣어서 MTA로 설정합니다.

왜 MTA 로 설정하고 있는지는 오래 되서 기억이 가물가물한데 아마도 XML 엔진 때문이 아닌가 합니다.

 

아무튼 AcroDiff에서 CoInitFlags를 기본값으로 설정하니 위와 같은 문제는 발생하지 않는데…

같은 구문이 들어가 있는 AcroEdit는 이상이 없고 왜 AcroDiff만 그러는지 정확한 원인은 모르겠네요… 뷁..!

 

 

Indy 소스에 올라가 있는 내 이름

No Comments

AcroEdit 를 개발하면서 FTP 기능을 지원하려고 이런저런 라이브러리들을 가져다 쓰다가 Indy에 정착해었더랬죠.

Indy가 그 당시 한글로 로컬라이즈된 FTP 서버에서 파일 목록을 정상적으로 받아 오지 못하는 문제가 있어서 Indy 개발팀에 문제를 보고하고 회피 방법을 알려준 적이 있었는데 담당 개발자가 이를 반영하면서 소스 커밋 이력에 제 이름을 넣어뒀었어요…

 

오늘 Delphi XE2에서 무언가를 검색하다가 다시 발견해서…

예전부터 알고 있던건데 간만에 다시 보니 반가워서 흔적 남기기 차원으로…^^

 

IdFTPCommon.pas

 

IdGlobalProtocols.pas

RAD Studio XE2 정보 모음

No Comments

RSS 리더에서 건지는 RAD Studio XE2 관련 글 모음입니다..
발견되는데로 추가해 놓겠습니다… 여기 없는 좋은 글 아시는 분은 댓글로 알려 주시면 감사하겠습니다…

FireMonkey

LiveBindings

Target Platform

 

VCL

Etc

RAD Studio XE2에서 FireMonkey로 iOS 앱 만들기

2 Comments

 지난 번 RAD Studio XE2에서 FireMonkey로 맥/윈도 공용 어플 만들기에 이어서 이번에는 아이폰/아이패드/아이팟 터치에서 돌아가는 iOS 앱을 만들어 보겠습니다.

 델파이 XE2를 실행하고 FireMonkey HD iOS Application 프로젝트를 생성합니다.

사용자 삽입 이미지

 다른 프로젝트는 타겟플랫폼을 WIN32, WIN64, OS X 세가지를 사용할 수 있지만 iOS 프로젝트는 당연한 얘기지만 타겟 플랫폼 선택이 안됩니다…^^ iOS 전용입니다.

 폼 디자이너에 아이폰처럼 생긴 프레임이 보입니다. XCode iOS Simulator에서처럼 제대로 보여주었으면 더 좋았을텐데 너~무 성의없네요… (추가 : RadPHP 에서는 제대로 보여주는 듯…)

사용자 삽입 이미지

 iOS는 화면 해상도가 디바이스 별로 정해져 있습니다.

  • iPhone 3GS : 320 x 480
  • iPhone4 : 640 x 960
  • iPad 1, 2 : 768 x 1024

 만들어볼 앱도 iOS용이니 폼의 ClientWidth와 ClientHeight를 320, 480으로 지정해 놓고 Code페이지와 Design 페이지를 왔다갔다(?) 하며 화면 디자인을 마쳤습니다. 아~~ 불편해… 왜 Copy & Paste가 안되는거야…

사용자 삽입 이미지

F9를 눌러서 실행해 봅니다… 이전 프로젝트에서 사용한 코드를 그대로 복사해 왔으니 아무런 에러 없이 동작합니다.

사용자 삽입 이미지

 윈도에서 디버깅까지 모두 마쳤으니 이제 iOS Simulator에 올려 보겠습니다.

 이전 포스팅에서 안내한 맥용 어플 개발과 달리 iOS용 앱은 델파이에서 직접 바이너리를 생성하지 못하고 맥용개발툴인 XCode Free Pascal의 힘을 빌려야만 됩니다.

 RAD Studio XE2 설치 폴더 아래에 FireMonkey-iOS 폴더에 보면 FireMonkey-iOS.dmg 파일이 있습니다.(주의 : XE2 Update2를 설치한 경우에는 위 파일이 갱신되지 않은체로 이전 버전이 남아 있습니다.  C:\Users\xxx\AppData\Local\Temp\radstudio_xe2_update2_download 폴더 아래에 있는 파일을 이용하세요.) 이 파일을 맥으로 복사한 뒤 실행합니다.

사용자 삽입 이미지

FireMonkey-iOS.dmg를 실행한 화면

 fpc-2.4.4.intel-macosx.pkg, FireMonkey-iOS-XE2를 순서대로 실행해서 설치합니다. 물론 그전에 XCode는 당연히 설치되어 있어야 겠지요… 첫번째 FreePascal은 금방 설치 되는데 두번째는 설치하는데 시간이 다소 걸립니다. 약 10여분 정도 기다리면 설치가 완료됩니다.

 델파이 프로젝트를 XCode에서 바로 열어서 사용하면 좋겠지만 안됩니다. XE2에서는 델파이 프로젝트를 XCode 프로젝트로 변환하는 유틸리티(dpr2xcode.exe)를 함께 제공합니다. 콘솔 프로그램인데 매번 콘솔 띄우기 귀찮으니 간편하게 사용하기 위해 Tools 메뉴에 등록해 줍니다.

사용자 삽입 이미지

 dpr2xcode를 실행하면 아래 그림과 같이 프로젝트 폴더에 xcode 폴더가 생성되고 그 아래에 XCode 프로젝트 파일이 만들어 집니다.


dpr2xcode로 만들어진 xcode 폴더

사용자 삽입 이미지

dpr2xcode로 만들어진 xcode 폴더의 내용

이제 프로젝트 폴더 전체를 맥으로 복사합니다. 매번 복사하기 귀찮으면 공유 폴더를 사용하시면 되겠죠.

사용자 삽입 이미지

맥에서 연결한 프로젝트 폴더

 저는 공유 폴더를 이용했습니다. 저기 보이는 iTactTimeCalc.xcodeproj 파일을 더블 클릭해서 XCode를 실행합니다.
사용자 삽입 이미지
 XCode에서의 타겟을 Device가 아닌 Simulator를 선택하고 Active Executable을 iPhone Simulator로 선택하고 Build And Run

사용자 삽입 이미지

짜잔~~~ iOS Simulator에 앱이 떴습니다~~~만  어라…? 폼 파일에 입력한 한글은 괜찮은데 코드 상에서 입력한 한글은 제대로 출력이 안되네…?

사용자 삽입 이미지

시뮬레이터에서 실행중인 앱. 한글이 일부 깨집니다.

 네… 안타깝게도 한글이 깨집니다만 이건 델파이가 *.pas 파일을 ANSI 코드로 엔코딩해서 저장해서 그렇습니다. XCode는 UTF-8을 사용해야 되거든요… 다행히도 델파이 코드 에디터에서 File Format 을 UTF8로 변경해주면 됩니다. 다만 Simulator에서는 이마저도 안되더군요. UTF8로 변경해도 Simulator에서는 여전히  깨지는데 아이폰에 직접 올려 보니 잘 보입니다…ㅠㅠ  문제가 무엇인지는 나중에 따로 살펴봐야겠습니다…

 아무튼 iOS 프로젝트를 만들면 자동으로 UTF8로 저장해 주면 좋을 것을 왜 개발자가 일일이 변경해야 하는 불편함을 주는지 모르겠네요…^^

 알아 두셔야 할 것은 iOS Simulator가 아닌 아이폰에 앱을 올려서 테스트 하는 것은 $99짜리 아이폰 개발자 등록이 되어 있어야 가능합니다.

 전 취미삼아(?) 아이폰 앱도 개발하고 있으니 아이폰에 올려 봅니다.

사용자 삽입 이미지

아~~ 앱 아이콘이 저게 뭐냐...ㅠㅠ

아~~ 여기서도 기본 앱 아이콘이 여~~엉 마음에 안듭니다…

사용자 삽입 이미지

아이폰에선 한글이 정상적으로 출력됩니다.

 아이폰에 올려서 잠깐 사용해 본 결과 몇가지 문제점이 발견되었습니다. 

 FireMonkey 콤포넌트들이 입력을 받을 때 키보드에 의해 가려지게 되는 문제가 있습니다. 가려져 버렸으니 뭘 입력하고 있는지 확인이 안됩니다… 아이폰을 사용해 보신 분들은 아시겠지만 일반 아이폰 앱들은 입력 항목이 자동으로 스크롤되어 키보드 상단에 나타납니다.
 다음으로 입력을 마친 다음 키보드를 사라지게 할 수 있는 방법이 없습니다.  위에서 예로 든 앱에서는 상단 콤보박스를 탭하니 키보드가 사라지더군요. 다른 부분은 아무리 탭해도 사라지지 않았습니다. 

 위 두가지 문제는 실제로 업무용으로는 사용할 수 없는 치명적인 문제라 생각됩니다.

기존 아이폰 사용자의 경험과는 전혀 다른 U/I를 가지고 있고 아이폰 U/I 프레임웍인 UIKit이랑 연동이 가능한지도 의문이 있어서 실제 업무에 사용하기에는 많은 고민이 필요해 보이지만 아무튼 델파이로 만든 프로젝트가 아이폰에서 정상적으로 동작하는 걸 확인했습니다.

Older Entries