Q&A

  • c#의 inkcanvas를 델파이에서 쓸 수 있게 DLL형식으로 만들 수 있을까요?

질문

c#의 inkcanvas를 델파이용으로 dll만들어서 써보고 싶습니다. 아니면 다른 방법이 있다면 알고 싶구요. 


간단한 소개

저는 xe7을 쓰고 있구요. 전문 개발자는 아닙니다. 델파이와 c#을 조금 할 줄 알구요. 어플리케이션은 간단한 거 몇가지 만들어 본 경험이 전부입니다. 

독학을 하다보니 개념이 좀 뒤죽박죽일 수 있습니다. 제 글을 읽으실 때 이 부분을 너그럽게 양해해 주시면 감사하겠습니다. 


저는 연습장 프로그램을 만들고 있는데요... 펜타블렛으로 글씨 쓰는 것을 좋아해서 키보드 연습장이 아닌 펜을 많이 쓸 수 있는 쪽으로 개발하고 있습니다. 

지인의 소개로 c# WPF을 익히게 되어 하고보니 inkcanvas라는 콘트롤이 있어 글씨쓰기 무척 편하게 만들어 놨더라구요. 

c#도 나쁘진 안지만 xaml에 대한 이질감이 커서. c#은 xamarine이 있긴 하지만 델파이로 해보고 싶은 욕심이 생기기도 하구요.

델파이로 win32에서도 쓰고 ios나 안드로이드에서도 쓸 수 있는 필기 프로그램으로 발전시켜보고 싶다는 욕심이 생겨서요. 


물론 델파이에도 inkedit라는 activeX 콤포넌트가 있고 블러와서 사용도 가능하다고 알고는 있습니다. 

지금은 제 실력으로 이것만 가지고 작업을 시작하는 것이 좋겠다는 생각입니다만

실력이 되면 inkcanvas를 델파이용으로 dll만들어서 써보고 싶습니다.


그동안 해본 것들

먼저 제가 지금까지 찾아본 것들을 정리하도록 하겠습니다. 지식이 없다보니 MSDN과 많은 인터넷 글들을 뒤져가며 따라해 보고 읽어본 후에 성공한 것이 아래 정도입니다. 

마샬링과 CUID, interop COM 등이란 단어들이 나와서 혼란을 겪던 차에


어떤 분들이 아래와 같이 답변 주고 받은 것을 읽고서 uses에 ComObj넣고 따라해 보니 되긴 합니다만 

Try to do the following in C#. before compiling the dll project, right click
on the project name, click on configuration properties, click on build and
set

"Register for COM interop" to TRUE.

Compile the DLL

Let's assume the DLL name is: C#DLL, and the class name within the DLL is:
C#Class  And the class has an "ADD" function that you want to call and pass
it two params: 45 , 33 and finally the return value is an integer

Then in Delphi, do the following:


    // Assign object reference to variable

    OleObj = CreateOLEObject('C#DLL.C#Class');


   //call the ADD function found in the C# DLL

    ShowMEssage(InttoStr(OleObj.Add(45, 33)));

Omar Bondogji



저는 여기 OleObj = CreateOLEObject('C#DLL.C#Class'); 에서 괄호안에 제가 만든 dll과 class잘 넣어준 것 같은데 문자열이 잘못되었다고 나와서 조금 고전중입니다.

이름은 제대로 써넣었구요. 혹시나 하여 테스트 프로젝트 디렉토리 따로 만들고 제가 만든 dll 파일을 복사해 넣어주었습니다. 그래도 에러는 계속됩니다. 

혹시 힌트가 될만한 경험이 있으신 분이 계실까하여 글 올려봅니다. ^^;


c#에 대해 알기위해 MSDN의 설명서도 모두 읽어 보았으나 아직은 @.@ 헤롱헤롱중입니다.

자신이 만든 간단한 class를 만들어서 가져오는 기능에 대한 설명은 있으나 inkedit처럼 component자체를 아예 가져오는 작업에 대한 얘기는 없는 것 같습니다. 

혹시 이런 부분에 대한 정보를 얻으려면 어디를 찾아보면 되는지 혹은 어디에 질문을 해보면 좋을지 조언을 구해봅니다. 





0  COMMENTS