Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[11835] Re:답변 정말 감사합니다. 확인하고 이렇게 바꿔봤습니다.
아루스 [tinydew4] 1580 읽음    2008-03-18 13:00
저 함수의 의도가 첫번째 인자로 넘겨준 포인터에 메모리를 할당하는 것이라면
void __fastcall TData::Test(Byte** bArray, int count)
{
   (*bArray) = new Byte[count];
   for (int i=0; i<count; i++) {
     (*bArray)[i] = 0;
   }
}
이렇게 하시고 호출시에 첫인자에 포인터의 포인터를 넘겨줘야 한다는 것이지요.
그런데 이렇게 하면 메모리 할당 위치와 해제 위치가 헷갈려 질 수 있습니다.

leo21c 님이 쓰신 글 :
: 말씀해 주신 부분중에 Byte**형태로 처리하라는 부분에서 이해가 잘 안됩니다.
: 아래와 같이 type에서 선언으로 하고 사용하면 문제가 있는지요?
: new를 이용하고 싶은데 아직 책을 보고 있는 중이라 적용을 못해 봤습니다.
: 좀더 공부해야 할 것 같습니다.
:
: 선언부
: void __fastcall Test(Byte* bArray, int count = 10);
: 구현부
: void __fastcall TData::Test(Byte* bArray, int count)
: {
:   bArray = new Byte[count];
:   for (int i=0; i<count; i++) {
:     bArray[i] = 0;
:   }
: }
:
:
: 파스칼로
:
: 선언부
: PArrayByte = Array of Byte;
: procedure TData.Test(bArray : PArrayByte ; count : Integer = 10);
: 구현부
: procedure TData.Test(bArray : PArrayByte ; count : Integer);
: var
:   i : Integer;
: begin
:   SetLength(bArray, count);
:   for I:=0 to count do begin
:     bArray[i] := 0;
:   end;
: end;
:
:
: 아루스 님이 쓰신 글 :
: : 파스칼 코드로 기본 인자값은
: :     procedure Test(A: Integer = 10);
: : 이렇게 해보니 되네요.
: :
: : 그런데 C++ 코드를 보니...
: : 함수 내부에서 동적 생성해 주려면 Byte** 형태로 받아서 하셔야 할겁니다.
: :
: :
: :
: : leo21c 님이 쓰신 글 :
: : : 사실 void*를 이용해서 타입에 따라 byte 데이터를 만들어 사용하려고 하는데
: : : 어떻게 하는지 몰라서 우선 이렇게 테스트 하고 있습니다.
: : : byte 동적배열을 만들어서 처리하려고 합니다.
: : :
: : : 인자(파라메터)로 아래와 같이 만들어서 사용하는데 무리가 없는지 모르겠습니다.
: : : 현재 C++ builder에서 작업을 하고 있습니다.
: : : 예전 소스가 파스칼이라 기존 작업을 예전 소스에 적용하고 있습니다.
: : :
: : : 파스칼 문법 c++과 비교해서 설명한 책이 있었으면 정말 좋겠습니다.
: : : 그런 책이 있으면 소개시켜 주세요.
: : : 그럼, 글 읽어 주신 모든 분들 감사합니다. 복 받으실거예요.
: : :
: : :
: : : C++에서는 동적 배열을 만들면 delete로 삭제를 해야 합니다.
: : : 파스칼에서는 동적으로 만든것을 어떻게 삭제하는지요?
: : : 배열은 new, dispose를 사용하면 안된다고 파스칼 안내서에서 읽었습니다.
: : : 그리고 함수 선언을 할 때 인자값 초기화가 파스칼에서 가능한가요?
: : :
: : : 예를 들어
: : : void __fastcall Test(Byte* bArray, int count = 10);
: : : 이렇게 말입니다.
: : :
: : : void __fastcall TData::Test(Byte* bArray, int count)
: : : {
: : :   bArray = new Byte[count];
: : :   for (int i=0; i<count; i++) {
: : :     bArray[i] = 0;
: : :   }
: : : }
: : :
: : :
: : : 파스칼로
: : :
: : : procedure TData.Test(bArray : Array of Byte; count : Integer);
: : : var
: : :   i : Integer;
: : : begin
: : :   SetLength(bArray, count);
: : :   for I:=0 to count do begin
: : :     bArray[i] := 0;
: : :   end;
: : : end;

+ -

관련 글 리스트
11832 C++에서 파스칼로 마이그레이션 중입니다. 파스칼 함수에서 인자값 표현이 맞는지 궁금합니다. leo21c 1624 2008/03/17
11833     Re:C++에서 파스칼로 마이그레이션 중입니다. 파스칼 함수에서 인자값 표현이 맞는지 궁금합니다. 아루스 1695 2008/03/17
11834         답변 정말 감사합니다. 확인하고 이렇게 바꿔봤습니다. leo21c 1531 2008/03/18
11835             Re:답변 정말 감사합니다. 확인하고 이렇게 바꿔봤습니다. 아루스 1580 2008/03/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.