Reference : http://www.fmxexpress.com/professional-open-source-computer-vision-library-for-delphi-xe7-firemonkey-on-windows/


우선, OpenCV 소스 코드를 다운 받고, 링크된 페이지의 내용에 맞추어 설치.

First of all, download the source code of OpenCV and run the execute file.


https://github.com/Laex/Delphi-OpenCV


msvcp140.dll 은 2017버전이 깔려있으면 굳이 2015를 설치하려고 애쓰지 않아도 됨. 설치도안됨..

if you have visual c++ 2017 version, you don't need to install 2015 version. even it doesn't install at all anyway.


이 순서대로 설치한뒤 델파이 패키지를 설치하면되는데, 그 과정에서 Can't load package 오류가 날 수도 있는데, Visual C++ 재배포 패키지를 다시 설치하면 해결됨.

윈도우에서 사용자 권한에 의해 윈도우 메시지를 못 받는 경우가있다.

임의로 추가하여 처리해 주어야 함.


Drag and Drop 예제

- 소스내 주석으로는 2004년에 Peter D Johnson라는 사람이 올린 소스를 수정하였음.



중요한 것은 권한 추가!

아래 함수를 추가하면 된다.


procedure SetDragAndDropOnSystemsWIthUAC(Wnd: HWND; IsEnabled: boolean);


procedure TForm1.SetDragAndDropOnSystemsWIthUAC(Wnd : HWND; IsEnabled : boolean);

type

  TChangeWindowMessageFilter = function(Msg : Cardinal; Action : Word) : Bool; stdcall;

const

  Msg_Add = 1;

  WM_COPYGLOBALDATA = $49;

var

  DllHandle : THandle;

  ChangeWindowMessageFilter : TChangeWindowMessageFilter;

begin

  DllHandle := LoadLibrary('user32.dll');

  if DllHandle > 0 then

  begin

    ChangeWindowMessageFilter := GetProcAddress(DllHandle, 'ChangeWindowMessageFilter');

    if Assigned(ChangeWindowMessageFilter) then

    begin

      DragAcceptFiles(Wnd, IsEnabled);

      ChangeWindowMessageFilter(WM_DROPFILES, Msg_Add);

      ChangeWindowMessageFilter(WM_COPYGLOBALDATA, Msg_Add);

    end;

  end;

end;


procedure TForm1.FormCreate(Sender: TObject);

begin

  // Tell windows we accept file drops

  SetDragAndDropOnSystemsWIthUAC(Self.Handle, True);

end;


procedure TForm1.FormDestroy(Sender: TObject);

begin

  // Cancel acceptance of file drops

  SetDragAndDropOnSystemsWIthUAC(Self.Handle, False);

end;


DragAndDropWithUAC.7z



델파이에서 클래스를 만들어서 사용할 때 데이터베이스의 테이블 컬럼들을 그대로 델파이의 클래스형태로 변환해 주는 쿼리.

This is sort of translator to use Oracle database table columns for Delphi class object.


--Oracle DB Column to Delphi Class

/***********************************************************************

* [ DB → Delphi Class 자동 생성 ]

*

* ex) ED_GB :arrow_lower_right:

* FEdGb : string; { 출입국구분 }

* procedure SetEdGb(const Value: string); { return delYn; }

* property edGb : string read FEdGb write SetEdGb;

* procedure THistObj.SetEdGb(const Value: string); begin FEdGb := Value; end;

***********************************************************************/

DECLARE 

P_OWNER     VARCHAR2(100); /* 사용자계정 */

P_TABLE     VARCHAR2(100); /* 테이블명 */

P_OBJECT    VARCHAR2(100); /* 객체명 */


R_VAR       VARCHAR2(32000); /* 변수 */

R_VAR_SET   VARCHAR2(32000); /* Setter 선언 */

R_VAR_PROP  VARCHAR2(32000); /* property 선언 */

R_SET       VARCHAR2(32000); /* set 메소드 */

BEGIN 

P_OWNER := 'ABCUSER';

P_TABLE := 'H100';

P_OBJECT := 'THistObj';


R_VAR := '';

R_VAR_SET := '';

R_VAR_PROP := '';

R_SET := '';


FOR X IN ( 

    SELECT 

        LOWER(SUBSTR(TC.COLUMN_NAME,0,1)) || SUBSTR( REPLACE(INITCAP(TC.COLUMN_NAME), '_'), 2, LENGTH(REPLACE(INITCAP(TC.COLUMN_NAME), '_'))-1) AS COLUMN_NAME

        , TC.DATA_TYPE

        , COMMENTS

        , decode(DATA_TYPE, 'VARCHAR2', 'string', 'CHAR', 'string', 'DATE', 'TDateTime', 'NUMBER', 'Integer', 'BLOB', 'string', 'string') AS DELPHI_TYPE

    FROM ALL_TAB_COLUMNS TC, ALL_COL_COMMENTS CC

    WHERE TC.OWNER = CC.OWNER

    AND TC.TABLE_NAME = CC.TABLE_NAME

    AND TC.COLUMN_NAME = CC.COLUMN_NAME

    AND TC.OWNER = P_OWNER 

    AND TC.TABLE_NAME = P_TABLE 

    ORDER BY TC.column_id

LOOP 

R_VAR := R_VAR || LPAD(' ', 4) || RPAD('F' || UPPER(SUBSTR(X.COLUMN_NAME, 1, 1))||SUBSTR(X.COLUMN_NAME, 2), 24, ' ') || ': ' || X.DELPHI_TYPE || '; { ' ||X.COMMENTS||' }' || CHR(13);

R_VAR_SET := R_VAR_SET || LPAD(' ', 4) || 'procedure Set' || UPPER(SUBSTR(X.COLUMN_NAME, 1, 1))||SUBSTR(X.COLUMN_NAME, 2) || '(const Value: ' || X.DELPHI_TYPE||');' || CHR(13);

R_VAR_PROP := R_VAR_PROP || LPAD(' ', 4) || RPAD('property ' || X.COLUMN_NAME, 30, ' ') || ': ' || RPAD(X.DELPHI_TYPE, 16, ' ') || ' read ' || RPAD('F' ||UPPER(SUBSTR(X.COLUMN_NAME, 1, 1))||SUBSTR(X.COLUMN_NAME, 2), 24, ' ') || ' write Set' ||UPPER(SUBSTR(X.COLUMN_NAME, 1, 1))||SUBSTR(X.COLUMN_NAME, 2)||';' || CHR(13);

R_SET := R_SET || 'procedure ' || P_OBJECT || '.Set' || UPPER(SUBSTR(X.COLUMN_NAME, 1, 1))||SUBSTR(X.COLUMN_NAME, 2) || '(const Value: ' || X.DELPHI_TYPE||'); begin F' ||UPPER(SUBSTR(X.COLUMN_NAME, 1, 1))||SUBSTR(X.COLUMN_NAME, 2)||' := Value; end;'|| CHR(13);

END LOOP;


DBMS_OUTPUT.ENABLE(1000000);

DBMS_OUTPUT.PUT_LINE('type');

DBMS_OUTPUT.PUT_LINE('  ' || P_OBJECT || ' = class(TObject)');

DBMS_OUTPUT.PUT_LINE('  private');

DBMS_OUTPUT.PUT_LINE(R_VAR);

DBMS_OUTPUT.PUT_LINE(R_VAR_SET);

DBMS_OUTPUT.PUT_LINE('  public');

DBMS_OUTPUT.PUT_LINE('  published');

DBMS_OUTPUT.PUT_LINE(R_VAR_PROP);

DBMS_OUTPUT.PUT_LINE('  end;'|| CHR(13));

DBMS_OUTPUT.PUT_LINE('implementation'|| CHR(13)|| CHR(13));

DBMS_OUTPUT.PUT_LINE('{ '|| P_OBJECT ||' }'|| CHR(13));

DBMS_OUTPUT.PUT_LINE(R_SET);


END;

델파이에서 Json 사용하기

Using Json in Delphi 


우선 델파이의 string에서 Json형태로 변경해주는 한줄 함수

At first, the function converting string to JsonString in 1 row.


uses 절에 REST.Json 추가

Add REST.Json @ uses 




TJson.JsonToObject

TJson.ObjectToJsonString 


클래스 함수로 선언된 것이라 반드시 TJson.을 붙여서 사용해야함

This has to write with TJson in front of the function because it is a class function as you can see.


간단한 클래스 생성

Create simple class



사용방법

Usage



요청 전문은 StringStream으로 TJson.ObjectToJsonString함수를 사용하여 객체를 곧바로 Json형태의 스트링으로 변환하여 담아준다. HTTPJson함수내용은 단순하게 주소로 StringStream을 Post방식으로 보내는 역할뿐이다.

The request as a StringStream is made by string of Json using the converting class TJson.ObjectToJsonString. 

HTTPJson function is simple that send StringStream as post method of HTTPPost().


HTTPPost에는 여러가지 overload된 함수가 존재하는데 string으로 요청을 보낼 시에는 이상하게 계속 폴더명이 붙어버린다.

There are lots of overloaded function of HTTPPost. so when trying to send as string, you can see it changes weird string seems like path of directory.

Avec PC Mini ERP System

 

Setup_AvecERP.exe

 

한번쯤은 그 때로 돌아가고 싶다..

 

 

어릴적 영화의 주인공과 같이 무슨일에 대해서 후회를 했을때 시간을 되돌리고 싶었던 적이 있었다. 내 생각을 그대로 표현해준 영화라 시작부터 끝까지 집중하고 본 영화..

 

어느 순간부터인가 여자관계라면 트라우마가 생긴 것 같다. 항상 내겐 생기지 않을 것만 같은 운명의 여자를 시간을 되돌리는 능력으로 옛날로 돌아가 묻고 싶다. 어쩌면 뜨거운 사랑이라는 걸 해보고 싶다. 용기라는 것이 없어 마음속으로만 좋아하고 지나갔던 모든 시간에 대해 그립기만 한 시간들로 남겼다는 것이 안타깝기만 했다.

 

처음 등장한 BGM은 내가 정말 좋아하는 곡이라 더더욱 내 감성을 자극했는지 모른다.

 

아직 늦진 않았을거라 생각한다. 운명의 사람이란 언제라도 찾아올 수 있는 것이 아닐지.. 그래서 그때가 되면 후회하지 않기위해 시간을 되돌리지 않아도 되도록 용기라는 것을 낼 준비를 해야겠다는 생각을 한다.

 

 

[사진출처] 다음영화  http://movie.daum.net/moviedetail/moviedetailMain.do?movieId=70829&t__nil_upper_mini=title

 

 

 

 

 

델파이로 만든 첫 프로그램..

운영데이터를 개발로 내리기 위해 만든 툴...

 

 

AP2DEV-Setup.exe

 

UserManual_DataLoad_V1.0.doc

 

AP2DEV_주제발표자료.pptx

 

AP2DEV.z01

 

AP2DEV.zip

 


처음 이책을 사게 된 것은 요즘 들어 책을 중간정도 읽다 마는 버릇(?) 같은게 생긴 것 같아 무엇인가 끝까지 읽을 만한 책을 찾으면서였다. 김난도 교수의 '아프니까 청춘이다' 라는 책이후로 끝까지 읽은 책이 없는 느낌이랄까..

제목이 참 와닿았다.
난 지금 외롭다. 이 느낌을 뭐라고 표현했을지 참 궁금했다. 뭐가 잘되고 있다는 것인지.. 책은 이렇게 말하고 있다. "위대한 영혼은 외로움이 주는 최고의 선물이다."


외로움을 두가지로 보고있다. 혼자있는 '고통'을 론니리스, 혼자있는 '즐거움'을 솔리튜드라는 말로 표현했는데 책을 읽으며 내가 느끼는 외로움에 대해 한번 돌아보게 되고 난 론니리스쪽인가 솔리튜드쪽인 사람인가에 대해 고민할 수 있었던 시간이었다. 주변에서나 내가 흔히 느낄 수 있을법한 에피소드들로 여러가지의 외로움을 이야기 해나가는 것을 보다보니 어느덧 책의 마지막에 도착해있었다.

책에 외국에서 진행했던 외로움에대한 실험이 나온다. 열악한 환경에서 자란 210명의 아이들을 관찰한 결과 대부분의 아이들이 어긋난 인생을 살아가지만 72명은 훌륭한 인재로 자라났다는 것.. 그리고 그 공통점으로는 주변에 자신을 알아주는 이가 한명쯤은 있었다는 것. 그래서 내주변에서 나의 외로움을 알아주는 사람이 누가 있을까란 생각을 해보기도 했다.

솔리튜드란 용기가 필요한 듯 하다. 요즘 혼자 밥먹는 것도 공연을 보는 것도 못하는 사람이 많지 않은가.. 혼자일때 가질 수 있는 나만의 시간은 용기가 필요한것이 아닌가 싶다.

10년 만인가..

그렇
게 큰 공연장에서 공연을 봤던 기억이 흐릿하다.

시작부터 큰 관심을 모은 뮤지컬인 것 같았다.
윤도현과 송창의 더블 캐스팅.. 윤도현씨의 공연도 보고 싶었지만 송창의씨의 무대를 보았는데 그의 목소리가 너무 좋았다.^^

9일 저녁 7시 공연에 사람이 꽤 많았다. 인터넷으로 예약을 했지만 조금 늦게 하다보니 2층 S석.. 그나마 좀 가운데 쯤이었지만 배우들의 표정이 선명히 보이진 않아서 조금 아쉬웠지만 이영훈씨의 아름다운 곡들로 인해 보는 내내 흐뭇했다. 

1부와 2부로 구성되었는데 1부의 마지막에 리사가 부른 '그녀의 웃음소리뿐'이라는 곡은 소름이 돋을 정도였다. 제목까지 아는 노래는 반정도 였지만 멜로디는 한번쯤 흥얼거려 보았을 그런 곡들이었다.

집으로 돌아오자마자 광화문연가에 나왔던 노래들을 쭉 찾아 들어보았다. 그래도 공연에서 듣고 보았던 흥분이 가시질 않았고, 나중에 이런 좋은 공연을 자주 보고 싶다는 생각이 들었다. 
  1. SMART_IBK 2011.04.11 10:07 신고

    저도 꼭 보고싶은 뮤지컬입니다.
    좋은 공연 보고 오셨네요.. ^^

    • 띵스 2011.04.11 13:20 신고

      네 기간이 짧았던 것이 좀 아쉽지만 정말 좋은 공연이었어요^^ 추천 쿵!

  설연휴 마지막날인 6일에 어떻게 우연히 보게 된 연극 art.

  그렇게 아무 생각없이 연극을 보게 된다.

  재미보다는 생각을 많이 하게 된 연극.



사건의 발단은 수현이라는 친구가 흰 바탕에 흰색선이 보이는 한점의 그림을 사게 되면서이다. 그것도 2억 8천만원이라는 거액의 아무것도 없는 하얀 그림.. 혹자는 흰색선이 보인다는 그런 그림..

사실 내가 보기에도 그 그림을 2억8천에 산다는 것은 상상하기도 싫은 일이다. 하지만 난 덕수라는 친구와 비슷한 성격이라 좋은게 좋은거고 뭐 그림에 관심이 있다면 그럴 수 있다고 생각하는 편이다. 그래도 2억8천은 좀..

규태라는 친구는 그런 수현에 대해 극단적으로 자신의 생각을 표현하고 이해하려하지 않는다. 수현의 자기과시에 대해 질투라도 하는 것처럼..

세사람 각각의 생각에 대해 저런 성격의 사람이라면 저럴 수 있다는 생각을 가졌지만 그것이 그렇게 우정에 금갈일인지는 잘 와닿지가 않았다. 수현이란 친구가 내 절친이라면 상황은 달라지겠지만..

그렇게 세사람의 우정을 두고 벌어지는 갈등과 그 해결과정은 비단 친구뿐만 아니라 사회에서 만나는 모든 사람들 간의 관계로도 생각해 볼만 했다.

+ Recent posts