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


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


LIST ALL
Posted by 박종훈2006-09-17 20:57:48, Hit : 3204
[델파이] 반환값이 있는 함수에서, 마지막에 이상한 값이;
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
1408 창조
     [re] 이 내용이 원하시는 것인지 모르겠지만 ^^;;
정성우 2006/09/23  3026
1407 기타
   레지스트 질문입니다. ^^; [3]
만물 2006/09/18  2686
기타
   [델파이] 반환값이 있는 함수에서, 마지막에 ... [3]
박종훈 2006/09/17  3204
1405 창조
   여러가지 질문. [1]
신용주 2006/09/17  2921
1404 창조
   파일정보 표시하기... [4]
신용주 2006/09/15  3172
1403 기타
   실행파일 생성이 안되네요... [3]
성인e 2006/09/15  2840
1402 창조
   상현님께... 창조 DX관련질문..`~~~ [2]
권선중 2006/09/13  2877
1401 창조
   창 이동 불가. [1]
신용주 2006/09/11  2946
1400 창조
     [re] 창 이동 불가. [예제소스] [3]
박종훈 2006/09/11  2810
1399 창조
   DLL 2개를 동시에 사용할방법없을까요..? [3]
권선중 2006/09/11  3716
1398 창조
   카테고리 구연하는 방법 좀... [5]
신용주 2006/09/11  3813
1397 창조
   창 크기 조절할때. 비율에 맞게 [2]
신용주 2006/09/08  3796
1396 창조
   그러니까... [4]
신용주 2006/08/30  3071
1395 창조
   버튼 누르면 선택창이 뜨게하고 예를누르면..... [3]
임재한 2006/08/25  2840
1394 기타
   윈도우 API 함수를 어디서 많이 얻나요??????? [4]
장규형 2006/08/24  3029
1393 창조
   여러 자료를 저장하는 법. [5]
신용주 2006/08/22  2859
1392 창조
   ㅎ테이블, ㅎ질의, ㅎ 자료표, ㅎ 문자표 사... [2]
신용주 2006/08/22  3491
1391 창조
   리스트박스에서 클릭된 내용의 줄수를 알아내... [2]
장규형 2006/08/20  2719
1390 창조
   환경읽기에서 환경파일의 정보를 읽어서 프로... [11]
장규형 2006/08/20  3547
1389 창조
   대체 핸들이란게 뭡니까 orz... [9]
PENJi 2006/08/16  3084
1388 창조
   창조 프로그램으로 포트리스 자동 힘조절 프... [1]
이지연 2006/08/14  3590
1387 창조
   잡다한 질문... [2]
신용주 2006/08/12  2854
1386 창조
   창조 프로그램은 실행압축이 이미 돼있는건가요? [6]
성인e 2006/08/12  4291
1385 창조
     [re] 창조 프로그램은 실행압축이 이미 돼있는건... [4]
성인e 2006/08/13  4063
1384 창조
   리스트박스객체의 칼럼은...? [3]
이희창 2006/08/11  3651
LIST ALL   Prev [1].. 31 [32][33][34][35][36][37][38][39][40]..[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이희철
로그인