창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판 (0/1)
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


창조 팁
- '창조' 에 관한 팁을 올리는 곳입니다. 다수의 이미지가 필요하시면 아래 '이미지 자료실' 에 업로드 후 불러와 주세요..


LIST ALL
Posted by 지상현2010-06-29 13:54:35, Hit : 4143
창조 전용 DLL 만들기 "창조의 자료형"
Homepage : http://ssidang.x-y.net
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=tip&no=413
이 팁은 다른 언어로 창조용 DLL을 만들 때 참고할 수 있는 사항을 모았습니다.
창조를 쓰는 분들을 위한 팁은 아닙니다.

주로 쓰는 언어와 툴은 Visual C++와 Delphi 정도로 한정하였습니다.

1. 창조에서 델파이로
창조에서 넘길 수 있는 자료형은 크게 세 가지가 있는데, 이걸 각각 델파이로 고치면 이렇습니다.

문자 -> String
실수 -> Cardinal
진리 -> Boolean

먼저 문자는 창조가 델파이 String을 사용하기 때문에 호환됩니다. (String이 PChar와 호환되기 때문에 PChar도 쓸 수 있지만, 원래는 String입니다.)

실수형은 Uint32 형을 넘겨야 하는데, 이는 창조가 0.9b 이하 버전에 음수 버그가 있기 때문에 창조와 동일한 값을 얻으려면 Cardinal을 쓰셔야 합니다.
물론 32비트 값이면 아무거나 상관 없습니다.


창조에서 소수값을 넘기는 경우는 테스트하지 못했습니다.


진리형도 마찬가지로 델파이의 Boolean 타입과 호환되지만, 진리형의 정의는 언어마다 다른 경우가 있어 가급적 진리형 자체를 사용하지 않길 권장합니다.

창조에서 호출할 수 있는 함수는 stdcall; 을 붙여주셔야 합니다.



function Hello(Text: String): Cardinal; stdcall;
실수함수: Hello(문자: Text);


2. 창조에서 C/C++로
창조의 자료형을 C/C++로 고치면 이렇습니다.

문자 -> char*
실수 -> unsigned int / UINT
진리 -> char

문자열은 char* (델파이의 PChar)와 호환되지만, Pascal 문자열이기 때문에 문자열 길이가 앞에 4바이트 헤더로 붙습니다.
그 뒤에 문자열이 들어있는데 실제 포인터는 거기서부터 시작됩니다.

따라서 문자열을 처리할 때 앞부분에 있는 길이로 처리해야 합니다.
창조의 문자는 NULL로 끝나는 문자열이 아닙니다.
(이 말은 NULL도 유효 데이터로 포함된다는 뜻입니다!)

실수는 델파이와 같습니다.

진리는 델파이 Boolean이 Int8이기 때문에 여기서도 char를 쓰셔야 합니다. (char*가 아닙니다!)

마찬가지로 __stdcall을 붙여주셔야 합니다.



UINT __stdcall Hello(const char* Text);
실수함수: Hello(문자: Text);


3. 문자열 다루기
창조는 반환형이 문자면 따로 복사해서 보관하는것 같습니다.
따라서, 문자열을 동적으로 생성한 경우 넘겨준 다음 나중에 직접 지워줘야 합니다.

다시 말해 문자열을 만든 쪽이 책임도 져야 합니다.

문자열은 포인터로 넘어오기 때문에 DLL 쪽에서 문자 내용을 수정할 수 있습니다.

LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
342
   [창조 V1.1a 16p] DB관련 명령어 중 도움말 없는 명령어와 숨...
바람 2023/02/03  304
341
   창조에도 goto문이 존재했었습니다.
바람 2018/01/05  2502
340
   메뉴제목 깔끔하게 사용하기
바람 2018/01/05  2285
339
   [창조 1.0] 팝업메뉴 사용 시 '제어'와 '보이기' 사용
바람 2018/01/05  2572
338
   [창조 1.0] 0.9b 대비 반복문 속도 향상.
바람 2018/01/05  2228
337
   [창조 1.0] '폴더선택창보여'와 '폴더선택창보여줘'의 차이.
바람 2018/01/05  2483
336
   [창조 1.0] 'ㅎ메모'의 '문자찾아'
바람 2018/01/05  2552
335
   관리자 권한이 포함 된 manifest
바람 2018/01/05  2194
334
   여러개의 DLL 사용 시 사용자함수 충돌 피하기
바람 2017/11/21  2206
333
   32비트 프로그램으로 64비트 윈도우의 'Redirection' 폴더 제...
바람 2017/10/18  2469
332
   '끝내' 쓸 때 유의할 점
성인e 2015/09/09  3070
331
   shr, 소반올림, bAND, % 시간 비교
성인e 2013/07/25  4530
330
   곱하기 버그 [2]
성인e 2013/07/07  5513
329
   작업 중 필요해서 만든 문자열내에서 서열 위치찾기 함수.
바람 2012/12/08  4029
328
     [re] 작업 중 필요해서 만든 문자열내에서 서열 위치찾기 함수.
바람 2017/10/18  2155
327
   'ㅎ메모' 문자찾아 최종.
바람 2012/11/11  5035
326
   "ㅎ리스트박스" 다중선택 처리
지상현 2012/01/26  5309
325
   배경을 다룰 때 유의할 점.
바람 2012/01/10  5506
324
   사용자함수 버그 관련 나름 사용중인 해법.
바람 2012/01/10  4706
323
   '사용자함수' 불러올 때 버그
지상현 2012/01/04  4439
322
   'ㅎ메모'의 문자찾아 속도 비교 2탄.[2011.12.20 12:45 내용... [1]
바람 2011/12/20  4623
321
     [re] 마지막 부분에서 속도 느려짐 해결.
바람 2012/01/10  4421
320
     문자함수 사용하는 방법 추가 [1]
지상현 2011/12/22  4886
319
   ㅎ메모의 64k 제한..
바람 2011/11/19  5501
318
     [re] ㅎ메모의 64k 제한..
바람 2017/10/19  2511
LIST ALL   1 [2][3][4][5][6][7][8][9][10]..[14] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인