2013년 7월 18일 목요일

블로그에 하이라이트 기능 넣기

델파이 관련 자료를 많이 다루다 보니 소스 코드가 많은데 보기에 별로여서 보기 좋게 꾸미려고 구굴링해보았더니 있더군요. 해서 따라 해보았습니다.

Adding Syntax Highlighting to Blogger 를 참조하세요. 

막상 따라해보니 이해가 잘 안되는 곳도 있더군요.

먼저

1. Go to http://syntaxhighlighter.googlecode.com/svn/trunk/Styles/SyntaxHighlighter.css, then perform a "select all" and "copy". The css information is now in the clipboard.

링크 따라가서 복사 한다음
[템플릿  > 사용중인 디자인 > HTML 편집] 한다음

2. Paste the css information at the end of the css section of your blogger html template (i.e., after <b:skin><!--[CDATA[/* and before ]]--></b:skin>).

]] 껏쇠 바로 앞부분에 넣으라는 이야기고..

3. [Updated March 25, 2009 to include closing script tags] Before the </head> tag, paste the following:

부분 코드 박스 위쪽에 있는  [View plain / Copy to Clipboard / Print / ?] 에서 Copy to Clipboard 를 선택하여 복사 한다음 </head> 바로 앞부분에 붙여 넣고

4. [Updated to add final /script] Before the </body> tag, insert the following:
역시 Copy to Clipboard 를 선택하여 복사 한다음  </body> 바로 앞에 붙여 넣습니다.

코드 작성 할때
<pre name="code" class="delphi">
...Your html-escaped code goes here...
</pre>
이렇게 하면 됩니다.

(4) 에서 아래와 같이 코드를 수정하면 Copy To Clipboard 가 활성화 됩니다.

<script language='javascript'>
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf'; 
dp.SyntaxHighlighter.HighlightAll('code');
</script>

** 복사하여 붙여 넣기 하면 ' 문자가 바뀌여 들어 가더군요.

2013년 7월 16일 화요일

홈페이지에 있는 자바 스크립트 호출하기

본 예제는 2가지의 기술이 들어 있습니다.
웹에서의 버튼 조작을 델파이로 갖어와서 델파이에서 처리를 하는데 TWebBrowser 의
StatusTextchange 이벤트를 이용하는 것과
웹에 있는 Javascript function 을 실행하는 것입니다.

홈페이지에는 아래와 같은 스크립트가 들어 있습니다.
<head>
  <script language="javascript">
        function closewin(num){
            window.status='close';
            window.status='';
            window.close();
        }
  </script>
</head>
.......
<from>
   <input id="idtext" name="idtext" type="text" />
   <input 0="" id="idimage" name="idimahe" onclick="closewin()" src="images/images.jpg" style="cursor: hand;" type="image" />
   <input id="idsubmit" name="idsubmit" type="submit" />
</from>
폼에 WebBrowser 와 Editor, button 3개를 올려 놓고
procedure TForm4.Button1Click(Sender: TObject);
var iDoc: IHTMLDocument2;
    iWin: iHTMLwindow2;
    ifunc: string;
begin
  WebBrowser1.Document.QueryInterface(IHTMLDocument2, iDoc);
  WebBrowser1.Document.QueryInterface(IHTMLWindow2, iWin);
  ifunc:= 'closewin()';
  try
    iwin.execScript(ifunc, 'JavaScript');
  finally
  end;
end;

procedure TForm4.Button2Click(Sender: TObject);
begin
  WebBrowser1.Navigate(http://localhost/test.html');
end;

procedure TForm4.Button3Click(Sender: TObject);
var Obj,Doc : OleVariant;
begin
  Obj:= 0;
  // 필요하면 IDispatch(TTTestCode.Create); 방법으로 Dispatch인터페이스로 형변환한다...
  // HTML Script는 Dispatch인터페이스만 지원한다.
  // Script 인터페이스를 얻고...
  Doc:=IHTMLDocument2(WebBrowser1.Document).Script;
  // Script의 SetObject함수를 호출한다...(이함수는 HTML의 JavaScript함수이다)
  Doc.closewin(obj);
end;

procedure TForm4.WebBrowser1StatusTextChange(ASender: TObject; const Text: WideString);
var iStr: string;
begin
  iStr:= Text;
  if istr= 'close' then begin
    close;
  end;
end;
웹에서 이미지를 크릭하면 프로그램이 종료합니다.
프로그램에서 버튼3를 크릭하면 웹에 있는 스크립트를 실행하고, 즉 이미지를 크릭한 것과 같은 현상, 그 결과로서 프로그램을 종료 합니다.
다른 스크립트를 실행 시킬 수 있고, 다른 동작을 할수 있겠지요.
예를 들어 특정 버튼의 결과에 특정 디비에서 자료를 읽어와 Html을 만들고 그웹을 뿌려줄 수 있겠지요.

한영변환(펌)

public에 밑에 함수 추가
const   English = 0; Korean = 1;
uses InputUnit, ViewUnit, Imm;
{$R *.DFM}
//////////// 한/영상태 검사 루틴///////////////
function TMainForm.IsHanState(paForm: TForm): boolean;
var
   fFlag, imeMode: DWORD;
   hIMC: THandle;
begin
   hIMC:= ImmGetContext(paForm.Handle);
   ImmGetConversionStatus(hIMC, fFlag, imeMode);
   ImmReleaseContext(paForm.Handle, hIMC);
   Result:= (fFlag = 1);
end;
//////////// 한/영상태 변화 루틴///////////////
procedure TMainForm.SetIMEMode(const Language: Integer);
var
   dwConversion, dwSentence: DWORD;
   hIMC: THandle;
begin
   hIMC:= ImmGetContext(Application.Handle);
   ImmGetConversionStatus(hIMC, dwConversion, dwSentence);
   Case Language Of
      English: ImmSetConversionStatus(hIMC, IME_CMODE_ALPHANUMERIC, dwSentence);
      Korean : ImmSetConversionStatus(hIMC, IME_CMODE_NATIVE, dwSentence);
   end; {Case Value Of}
   ImmReleaseContext(Application.Handle, hIMC);
end;

procedure TMainForm.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
   If IsHanState(Self) Then StatusBar1.Panels[1].Text:= ' 한글 '
   Else StatusBar1.Panels[1].Text:= ' 영문 ';
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
   InputFormActive:= False;
   ViewFormActive:= False;
   InputClose:= True;
   Application.OnHint:= ShowHint;
   Application.OnMessage:= AppMessage;
   SetIMEMode(Korean);
   Left:= 1;
   Top:= 1;
end;
* 자료출처 : http://blog.daum.net/ryang000/118

2013년 7월 15일 월요일

명령창 열기 (cmd) 이렇게..

컴퓨터를 다루면서 명령창을 열어야 할 경우가 자주 있는데 이제 까지는
[시작 > 실행.. > 열기 = cmd] > 확인] 을 하였습니다.

특정한 폴더에서 열 경우에는
[해당 폴더의 상위 폴더로 이동한 다음 > 팝업창(마우스 오른쪽버튼 누르면 나오는 돌출메뉴) > Shift + 마우스 오른쪽 버튼 한다음 > 여기서 명령창 열기를 선택]하였습니다.

이렇게 해보세요.
탐색기에서 특정한 폴더로 이동한 다음 > 탐색기의 경로가 보이는 곳에서 >
마우스 한번 크릭 한 다음 cmd 라고 입력하고 리턴하면...

경로창으로 곧바로 이동하는 단축키는 Alt + D 입니다.

이것을 이제 까지 모르고 시작... 하고 있었으니... (아래와 같은 것도 해보세요. exe는 생략)
chrome.exe
bds.exe
about:blank
localhost
http://google.co.kr
www.google.co.kr
www.daum.net
inetmgr.exe
제어판
c:\temp
regedit.exe
services.msc
wf.msc  => 방화벽 관리
diskmgmt.msc
devmgmt.msc > 장치관리자
compmgmt.msc > 컴퓨터관리자
commgmt.msc > 구성요소관리자
notepad.exe
.....................................

까있거! 패스만 연결되어 있으면 전부 되고, 인터넷 익스플러 또는 크롬등 디폴트 인터넷 탐색기의 주소창에 입력하는 것이 전부 됩니다.


PhpStorm 과 WebStorm 에서 MySql DB 관리

IDE 상태에서 MySql DB에 연결하려면 이렇게 하면 된다는 군요.

  1. Install DB Navigator Plugin via menubar >> Settings >> Plugins >> Available-Tab
  2. Download MySQL jdbc connector from here >> http://www.mysql.com/downloads/connector/j/
  3. Unpack MySQL jdbc connector to a directory of your choice
  4. Restart PHPStorm / WebStorm
  5. Add a DB via menubar >> DB Navigator >> Settings >> Connection-Tab >> Plus-Button
  6. Enter the parameters for your connection (see below for possible entries for a local MySQL DB)
Possible parameters for a local MySQL DB
  • Name: name of choice (localhost)
  • Description: additional info of choice (dbname)
  • Driver Library: path to the .jar file (that is the directory used in step 3)
  • Driver: your perfered driver (most likely the standard driver will do >> com.mysql.jdbc.Driver)
  • URL: connection URL with a jdbc reference (in doubt try: jdbc:mysql://localhost:3306/)
  • UserName: the db username (root)
  • Password: the db password (root)
버전 6.0 에서는 이렇게 해도 되는 군요.
IDE 오른쪽에 숨겨진 DataBase 탭을 보이게 한다음
마우스오른쪽 버튼 팝업창에서 " + New > Data Source"를 선택한다음
Data Source name: LocalRoot
Scope: IDE
Database Tab > JDBC driver Files > 드롭다운 박스 아래 화살표를 눌러
접속하고자 하는 드리이버를 선택하면 다운받아 .jar 파일을 저장합니다.
드롭다운 박스 오른쪽 "...." 버튼을 선택하여 방금 다운받은 파일을 선택합니다.
JDBC driver Class: 드롭다운 박스에서 com.mysql.jdbc.Driver 를 선택합니다.
Database URL: 드롭다운 박스 아래 화살표르 눌러 입력 형식을 선택합니다.
jdbc:mysql//localhost:3306
이렇게, 특정 Database를 지정하려면
jdbc:mysql//localhost:3306/honam
User: 와 Password: 텍스트 박스에 root 와 암호를 입력하고
아래쪽 Test Connection 버튼을 눌러 확인합니다.

확장 시킨 DataBase 탭에서 원하는 데이터베이스를 선택하고
마우스 오른쪽 버튼 > Console 하여
Select * from workers;
DB 내용을 확인 할 수 있습니다.
사용해보니 정말 좋네요. WebStorm 하나 구입해야 겠네요.

2013년 7월 12일 금요일

ActiveX폼에서 JavaScript의 함수 호출

델마당의 강용희님 글 델마당에는 소스가 첨부되어 있습니다.
우선...
ActiveX폼이라는 놈을 이용해 프로그램을 만들면 꼭 한번씩 JavaScript의 함수를 호출할때가 필요합니다. 여기저기 알아봐도 답이 없고 해서 직접 분석해서 알아 냈습니다... 원리는 간단한데... 예상외로 알고 있는 사람이 없더군요... 제가 원래 말솜씨가 없서서 강좌가 좀 부실할검니다... ^^;; 넓은 아량으로 봐주세요!!

우선 JavaScript에서 지원하는 Object는 Automation Object입니다... 이 Object는 COM이기는 COM인데, 이름으로 호출 하는것을 지원하는 놈이죠... 델파이의 경우는 C나 C++처럼 포인터를 이용해서 함수를 호출하는 방식하고 JavaScript나 VB에서 지원하는 이름으로 함수를 호출하는 방식 모두를 지원합니다... 
COM Object만드는 방식은 여기 강좌에 보시면 많이 있으므로 생략하고...
Automation Object는 델파이의 File->New->Other->ActiveX->Automation Object를 선택하면 만들수 있습니다. 만일 ActiveX Form에서 사용한다고 하면 ActiveX Form자체가 Automation Object이므로 따로 Object를 만들 필요가 없고, ActiveX Form에서 Typelib 편집기에서 함수를 만들면 JavaScript에서 바로 함수를 호출할수가 있습니다.^^;;
아래는 Automation Object의 예입니다... 

unit Unit2;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
   ComObj, ActiveX, Project1_TLB, StdVcl, Dialogs;
type // Automation(Dispatch)오브젝트...
  // HTML(JavaScript)에서 호출을 할려면 VB처럼 Dispatch방식을 지원해야 된다...
TTTestCode = class(TAutoObject, ITTestCode)
protected
procedure TestCall(const Param1: WideString); safecall;
end;
implementation
uses ComServ;
procedure TTTestCode.TestCall(const Param1: WideString);
begin // ShowMessage로 전달받은 문자열을 출력한다...
  ShowMessage('난 델파이의 객체야!!'+#13+Param1);
end;
initialization
TAutoObjectFactory.Create(ComServer, TTTestCode, Class_TTestCode,
ciMultiInstance, tmApartment);
end.

멤버함수로 TestCall이라는 함수가 있는데... 이함수는 전달받은 인수를 델파이의 ShowMessage를 이용해서 출력합니다.
그러면 TestCall은 누가 호출을 하느냐 하면...
아래의 HTML에서 "요기를 눌러보세요"를 누르면 호출을 합니다.. ^^;; 

요기를 눌러보세요... 

그럼 위의 두문장으로 실행이 될까요. 당연히 않되겠죠. object는 선언만 되었지... 실제로 객체가 할당이 되지 않았으니까요. 그럼 Object를 할당하는 JavaScript함수를 만들었습니다...
함수는 SetObject이구요...
이제 이함수를 메인 폼에서 호출해주면 되겠죠!!
그럼 이제 메인 소스를 볼까요!!

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComObj, StdCtrls, OleCtrls, SHDocVw, MSHTML;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin // HTML을 읽어 들인다...
  WebBrowser1.Navigate(ExtractFilePath(Application.ExeName)+'test.htm');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  Obj,Doc : OleVariant;
begin
  Obj:=IDispatch(TTTestCode.Create); // Dispatch인터페이스로 형변환한다...
  // HTML Script는 Dispatch인터페이스만 지원한다.
  Doc:=IHTMLDocument2(WebBrowser1.Document).Script; // Script 인터페이스를 얻고...
  Doc.SetObject(Obj); // Script의 SetObject함수를 호출한다...(이함수는 HTML의 JavaScript함수이다)
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Obj,Doc : OleVariant;
begin
  Obj:=Unassigned;
  Doc:=IHTMLDocument2(WebBrowser1.Document).Script;
  Doc.SetObject(obj); // HTML의 Object를 Null로 초기화 한다...
end;

procedure TForm1.Button4Click(Sender: TObject);
var Win : IHTMLWindow2;
begin // 아래는 다른 방법으로 스크립트를 호출한다...
  // 이방법의 단점은... 오직 문자열로만 표현되는 인수만 전달할수 있다.
  // 즉 문자나 숫자는 전달할수 있지만,
  // Object등은 전달할수가 없다...
  Win:=IHTMLWindow2(IHTMLDocument2(WebBrowser1.Document).frames); // HTML의 Window객체를 얻는다...
  Win.execScript('SimpleCall("다른 방법으로 스크립트 호출")','');
end;
end.

위의 소스를 보면 Button2를 누르면 Automation Object를 만들어서 HTML SetObject를 호출해 객체를 설정하는것을 알수 있습니다... ^^;;
이렇게 객체를 설정한후에 링크를 누르면 제대로 동작하느것을 볼수 있을것입니다.
원리는 간단하죠!!
근데 아무리 강좌를 뒤비봐도 없더라구요...

휴... 
위에서 보듯이 HTML의 JavaScript함수를 호출하는 방법은 2가지가 있는데...
첫번째는 Script라는 Dispatch인터페이스를 이용해서 호출하는 방법입니다...
이방법이 가장 좋은 방법이구요...

아니면 IHTMLWindow2의 execScript함수를 이용해서도 호출을 할수 있습니다...
단지 이방법은 문자열로 함수를 호출하기 때문에 인수의 타입에 제한이 있죠.,..

그럼 수고하시구요...
즐프하세요;;

NodeJs 관련 자료 링크

노드 홈페이지 http://nodejs.org/

node.js 한글 도큐먼트  http://nodejs.sideeffect.kr/docs/

Node.js 책 쓰신 아웃사이더 님의 블로그  http://blog.outsider.ne.kr/category/node.js 


express 한글 가이드 http://firejune.io/express/guide 

Jade 한글 가이드 http://blog.doortts.com/223 


express 설치 - 글로벌로 설치 
>npm install -g

Node 생성 
>express [Application Name]

Node 생성 - with Session 
>express [Application Name] -s

Jade 설치
>npm install express jade 

Mysql module 설치
>npm install mysql

Socket.io 모듈 설치
>npm install socket.io

몽골리안 설치
> npm install mongolian

박병일 님 자료 http://feeding.kr/js 


윈도우 핸들로 HTML 갖어 오기 http://bloodguy.tistory.com/748

2013년 7월 9일 화요일

Netbeans 로 android App 개발(PhoneGap)

NetBeans IDE 에서 Phone Gap 이용하여 Android App 개발 환경 설정하기

Phone Gap 은 Html, CSS, Java Script 만으로 web 이 아닌 App 을 개발 할 수 있다.

1. NetBeans IDE 를 설치
 - netbeans ide 로 구굴링해서 2013.7.9 기준으로 NetBeans IDE 7.3.1, Java SE 81 을
 - 다운 받아 설치한다. All 을 설치하면 더 좋겠지요.
2. Java SE 를 설치
 - java se 로 구굴링해서 오라클 다운로드 사이트에 접속하여
 - Java Plaform(JDK) 7u25를 다운 받아 설치 합니다.
 - 참고로 자신의 OS 상태에 맞추어서 설치 해야 겠지요.
 - 저는 windows x86 (i586)을 선택 했습니다.
 - 라이센스 동의 여부를 물어오니 Accept License Aggrement 를 선택합니다.
2-1 저는 이 화면에서  JDK7 + NetBeans 을 선택하여 한방에 설치하였습니다.
3. PhoneGap 설치
 - phonegap 으로 구굴링해서 PhoneGap 2.9.0 을 다운받아
 - 압축을 풀어 놓고 폴더 이름을 잘 기억해 둡니다.
4. Android SDK 설치
 - android sdk 으로 구굴링해서 developer.android.com에 접속하여
 - SDK를 받아 오는데, 기본으로 되어 있는 ADT Bundle for windows 으로 하거나, 
 - USE AN EXISTING IDE 로 해서
 - sdk를 설치하는데 설치되는 폴더를 잘기억 해 둡니다.
 - ADT 번들로 하면 eclipse 가 설치됩니다.
 - 설치 하려는데 Next 가 활성화가 안되는 경우가 있습니다.
4-1 Java 환경설정
 - 바탕화면의 내컴퓨터에서 마우스 오른쪽 버튼 > 속성 > 고급 시스템 설정(win7)
 - 하여 나오는  시스템 속성 창에서 > 고급 탭을 선택하고 >
 - 환경 변수 창에서 > 시스템 변수에서
 - JAVA_HOME 변수가 있는지 확인하고 없으면 (2)에서 설치한 폴더를 지정해 줍니다.
 - 저의 경우에는 c:₩program files₩java₩jdk1.7.0_25 입니다.
5. Android SDK Manager 이용 필요 파일 다운 받기
 -  (4) 과정이 끝나면 Android SDK Manager 창이 뜹니다.
 - 만약 안뜨면 c:₩program files₩android₩androis-sdk₩sdk manager.exe 를 실행합니다.
 - 인스톨이 필요한 파일이 Not Installed 라고 표시되니 install packages 버튼을 크릭하여 
  인스톨 합니다. 
 - 참고로 Tools 가지에 sdk tools, sdk platform-tools, sdk build-tools 
 - 세가지가 인스톨 되어 있는지 확인하세요.
 - 저는 build-tools 가 빠져 마지막 단계에서 
 - sdk dies not have any build tools installed 에러를 만났었습니다.
6. nbandroid template 설치
 - nbandroid 로 구굴링하여 나온 사이트에서 업데이트 주소를 복사해옵니다.
 - NetBeans을 실행시키고, Tools > PlugIns > Settings 탭에서 Add 버튼을 눌러 
 - 적당한 이름(nbandroid)을 주고 url 에 복사해둔 업데이트 경로를 붙여 놓고 ok 합니다.
7. 계속하여 PlugIns > Settings > Available Plugins 탭에서 android 찾아 체크한 후
  install 버튼을 선택합니다.
8. NetBeans 에 sdk 패스 설정하기
  -  NetBeans > Tools > Options > Miscellaneous > android 탭에서
  - SDK Location 에 android-sdk 패스를 설정합니다.
9. 윈도우 [시작 > 실행 창(cmd)]을 열어 
 -  java -version
 -  javac -version 하여 패스 연결이 제되로 되어 있는지 확인합니다.
9-1. 4-1과 같은 방법으로 path 변수를 확인하여, 
 - ../android-sdk₩tools 와 
 - ../android-sdk₩platform-tools 와 
 - ..java₩jdk1.7.0_25₩bin 이 제대로 걸려 있는지 확인합니다.
 - 저는 jdk 가 걸려 있지 않아 추가 javac 가 안먹더군요.
10. toos > adv manager 에서 new 버튼을 눌러 적당한 단말기를 만듭니다.
 - cpu type 은 arm.

** 새로운 프로젝트를 하여면 이곳부터 하면 됩니다. **

11. netbeans 에서
 - [file > newproject > categories > android > projects = android project]
 - next버튼을 차례로 선택합니다.
12. New Android Application 창에서 다른칸은 적당하게 선택하고 , 
 - Package Name 에는  a.a등으로 입력합니다.
 - finish 버튼을 눌러 기본 골격을 생성합니다.
13. 왼쪽 projects 창에 보면 
 - 방금 만들어진 골격이 제대로 되지 않아 빨강 버튼이 보입니다.
 - NeBeans 을 종료합니다.
14. 탐색기 창을 열어 방금 생성한 프로젝트 폴더에 있는(내문서 폴더에 있겠지요)
 - src, res, libs 폴더와 androidmanifest.xml 파일을 삭제 합니다.
15. phonegap 폴더 > lib 폴더 > android 폴더 > example 폴더 에서
 -  asserts, libs, res, src 폴더와 androidmanifest.xml 파일을 복사하여 와서 방금전에 삭제 해버린 프로젝트 폴더에 복사합니다.
16. netneans 를 다시 실행합니다. 
 - projects 창에 빨간 버튼이 사라졌음을 확인하세요.


17.NetBeans 의 projects 창의 
 - assert 의 www 아래에 있는 
 - index.html 을 불러와서 
 - <body>..</body> 영역에.  hello world! 라고 입력하세요.
18. run 버튼을 크릭하고 가상단말기가 나타 나는 것을 기다립니다. 
 - 끈기 있게 기다리세요.
 - 기다리기 지루하면 아래쪽 output 창이나 소스를 확인하세요.
19. 에뮬레이터가 아주 늦는 것은 이해하셔야 합니다.
 - 싸구려 중고 단말기하나 구해서 USB에 곱아 하는게..)
20. 에뮬레이터가 정상으로 올라오면 
 - app 영역에 보면 
 - example 이라는 app 이 설치되어 있슴을 확인하세요. 
 - 아이콘은 프린터 모양입니다.
 - 선택하여 실행
21. 가상 단말에 hello world 가 보이는 것을 확인 합니다.

2013년 7월 8일 월요일

radphp 에서 mysql 연결시 한글 깨어질때

radphp xe2 를 이용하여 mysql 에 접속하면,
서버의 문자코드에 따라 한글이 제대로 보이지 않는 경우가 있다.
이때는 
MysqlDataBase1AfterConnect($sender, $params) {
   $this->MysqlDatabase1->execute('set names utf8;');
}
하면 해결이 된다.
그러나 Data Explorer 에서 연결은 되는데 Table 을 열라치면 에러가 난다.
아마 dbexpress 에서 문제가 있는 것 같다.
동일 시스템에 Delphi xe2 에서는 잘되는데...

radpho xe2 에 있는 안드로이드 개발 환경을 설치하다보면 잘 안되는 경우가 많은데.
특히나 재설치 하는 경우 무한 루프에 빠지는 경우가 나옵니다.
이때는 다음 버전인 HTML5 Studio 버전에 있는 android-setup.exe 를 실행하면 잘됩니다.

근데 왜 HTML5 Studio는 그렇게 시커먹게 해 놓고, 창크기도 조절하지 못해게 하였는지
아무리 테마를 바꾸려고 해고 안되네요..


델파이 12.1이냐 11.3이냐?

 델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.