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


질문게시판
- 반드시 검색을 하신 후 원하는 답변을 찾을 수 없을 때, 질문을 올려주세요.


LIST ALL
Posted by 박종훈2006-09-17 20:57:48, Hit : 3207
[델파이] 반환값이 있는 함수에서, 마지막에 이상한 값이;
Homepage : http://www.canxan.com/~qnrdlqkrwhdgns
File #2 : asas.rar (707.7 KB)   Download : 48
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=qna&no=1644


분류를, [기타]로 해놨으며, 제목에는 미리 '델파이' 라고 했습니다.

새로운, WebEditor 구상하는 것이 있어서 [야심차게 흐흐 -_-;]

예전에는[Web+ Editor], 표 만들기 등등이, 창조의 반복문이어서 느린감이 있었지만,
새로 구상하는 웹에디터에는, 델파이로 DLL을 만들어서,
DLL에서 반복문을 해결해서 속도 향상을 끌어낼 생각인데요..

잘 됩니다.! 그런데..
마지막에 이상한 값이 출력됩니다.

델파이측 소스 :
function aa:PChar; stdcall;


var
   i:longint;
   a:String;

begin


for i:=0 to 20000 do
  begin
    a := a+'aa'+Chr(13)+Chr(10);
  end;


aa := PChar(a);


end;


얼추 이렇습니다. -_-; [델파이를 몰라서, 그냥 인터넷에서 아는 대로 적었더니 대략 됩니다.;]
그런데, 마지막에 이상한 ,5 라는 값이 나오는데요..

왜 이런가요? 변수형이 이상해서 그런가요?
첨부파일에는, 작업한 내용입니다.


손상진   2006-09-17 PM 11:03:00  
0부터 20000까지라고 줬지만..
돌아온데이터(메모로 돌아온) 줄수를 확인해보니 4000여줄이였나 밖에 안되네요..
한마디로 짤린듯 --a..
(제 추측입니다.)
지상현   2006-09-17 PM 11:49:56  
간단히 생각해보면, a 라는 문자열은 함수 안쪽에 있습니다.
그리고 문자열이란건 실제로는 어떤 연속된 메모리 영역이며, 문자열 변수는 단지 그 첫번째 주소만을 포인트 하고 있는 일종의 포인터입니다.
그것을 강제로 PChar로 바꿔서 반환 받고, 함수가 끝났으니 문자열 a 는 파괴됩니다. 따라서 함수가 끝난 순간부터 문자열이 제대로 들어있을지에 대해서는 보장할 수 없습니다.

문자열을 정확히 다루는 언어에서는 반드시 문제가 발생합니다. 하지만 델파이는 이것을 언어 차원에서 지원해주죠. 따라서 델파이 끼리는 잘 됩니다만, 창조는 이것과 처리 방식이 달라서 문제가 생기는 것 같네요.

정확한 문자열을 반환받으려면, StrAlloc 같은 함수로 문자열을 새로 할당 받고, 그 안에 데이터를 집어넣으면 됩니다. 물론 이 경우에는 나중에 필요 없을 때 StrDispose 로 문자열 데이터를 해제해줘야 합니다.
박종훈   2006-09-18 PM 8:44:51  
일단, 시험이 끝난후에 인터넷으로 관련 정보를 찾아보고,
한번 적용해보겠습니다. ^^;
[예제 올려주신다면 저로서는 좋은데요^^;, 일단 제 힘으로 하다가
벅차다면 다시 또 질문 드리겠습니다. ^^;;]
LIST ALL               GO TO THE TOP


N
Category
   Subject
Posted by
Date
H
758 창조
   창 이동 불가. [1]
신용주 2006/09/11  2951
757 창조
     [re] 창 이동 불가. [예제소스] [3]
박종훈 2006/09/11  2814
756 창조
   상현님께... 창조 DX관련질문..`~~~ [2]
권선중 2006/09/13  2894
755 기타
   실행파일 생성이 안되네요... [3]
성인e 2006/09/15  2845
754 창조
   파일정보 표시하기... [4]
신용주 2006/09/15  3178
753 창조
   여러가지 질문. [1]
신용주 2006/09/17  2930
기타
   [델파이] 반환값이 있는 함수에서, 마지막에 ... [3]
박종훈 2006/09/17  3207
751 기타
   레지스트 질문입니다. ^^; [3]
만물 2006/09/18  2692
750 창조
   어떤문서->자동입력..질문 [4]
이성기-LG싸이언- 2006/09/21  2885
749 창조
     [re] 이 내용이 원하시는 것인지 모르겠지만 ^^;;
정성우 2006/09/23  3031
748 기타
   메크로 질문을 올려봅니다. [6]
만물 2006/09/23  2845
747 창조
   위도우 시작시 자동 실행되는 레지스트명령좀... [4]
권선중 2006/09/23  3186
746 창조
   고수님들 함봐주세요 ^^ [1]
만물 2006/09/23  2750
745 기타
   [질문]게임개발시 요령? [6]
김환욱 2006/09/24  2821
744 창조
   트레이만 보내기..[질문수정] [5]
권선중 2006/09/24  4131
743 기타
   [질문]게임개발시 그래픽부분... [4]
김환욱 2006/09/24  2786
742 창조
   미니메모장 - 명령어 부분~ [8]
신용주 2006/09/30  2902
741 창조
   실행하면 창이 여러개 뜨는데 딱 1개로 줄이는법 [8]
김준현 2006/10/01  2647
740 창조
   PNG 파일을 ICO 로 바꾸는법 없나요? [4]
김준현 2006/10/01  3124
739 창조
   [질문] 리스트박스 [1]
드래곤볼 2006/10/02  2762
738 창조
   데이터 연결, 데이트 필드에 대해서...
신용주 2006/10/02  2723
737 창조
   명령어 기능 넣기... [5]
신용주 2006/10/02  2837
736 창조
     [re] [질문] 리스트박스 [1]
김환욱 2006/10/02  3153
735 창조
   [질문]창조 저장할때요 exe파일로 저장하는방... [4]
최민석 2006/10/07  3247
734 기타
   흠..Manifest를 만들어놓으면... [3]
김환욱 2006/10/08  3707
LIST ALL   Prev [1]..[51][52][53][54][55][56] 57 [58][59][60]..[87] 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이희철
로그인