Q&A

  • 함수에서 const값은 어떻게 넘겨요!
함수에서 const값을 파라메트로 넘기려고 하는데 잘 안되네요!



호출 함수

procedure Call;

var

Str : String;

Buffer : array[0..128] of Char;

begin

Str := '테스트 문자열입니다!';

StrPCopy(Buffer, Str);

StgStream.Write(Buffer, Sizeof(Buffer));

end;





Write함수의 원형은 다음과 같습니다.

function TPTStgStream.Write( const aBuffer; aCount: Longint ): Longint;

var bytesWritten: Longint;

begin

if (@aBuffer = nil) then

result := 0

else

begin

AssertResultOk(mIStream.Write( @aBuffer, aCount, @bytesWritten ));

result := bytesWritten;

end;

end;





위와 같이 하니까 정상적으로 작동하더군요!

그러나 문제는 Str의 크기가 계속 변환다는 것입니다. Buffer의 크기를 유동적으로 조절하려고 하면 어떻게 해야 하나요?

그리고 Buffer을 사용하지 않고 Str값을 바로 조작하여 Write의 파라메터로 넘길 수는 없나요? 제가 사용한 방법 말고 좀 더 효율적인 방법이 있으면 알려 주세요!



파시칼에서 스트링 형 변환은 너무 어려워요!

도와 주세요!



2  COMMENTS
  • Profile
    최용일 2000.03.08 20:01
    아래와 같이 버퍼를 열린배열로 하고 SetLength를 이용하여 크기를

    설정하여주시면 됩니다.

    procedure Call;

    var

    Str : String;

    Buffer : array of Char;

    begin

    Str := '테스트 문자열입니다!';

    SetLength(Buffer, Length(Str) + 1);

    StrPCopy(Buffer, Str);

    StgStream.Write(Buffer, Sizeof(Buffer));

    end;







    이태호 wrote:

    > 함수에서 const값을 파라메트로 넘기려고 하는데 잘 안되네요!

    >

    > 호출 함수

    > procedure Call;

    > var

    > Str : String;

    > Buffer : array[0..128] of Char;

    > begin

    > Str := '테스트 문자열입니다!';

    > StrPCopy(Buffer, Str);

    > StgStream.Write(Buffer, Sizeof(Buffer));

    > end;

    >

    >

    > Write함수의 원형은 다음과 같습니다.

    > function TPTStgStream.Write( const aBuffer; aCount: Longint ): Longint;

    > var bytesWritten: Longint;

    > begin

    > if (@aBuffer = nil) then

    > result := 0

    > else

    > begin

    > AssertResultOk(mIStream.Write( @aBuffer, aCount, @bytesWritten ));

    > result := bytesWritten;

    > end;

    > end;

    >

    >

    > 위와 같이 하니까 정상적으로 작동하더군요!

    > 그러나 문제는 Str의 크기가 계속 변환다는 것입니다. Buffer의 크기를 유동적으로 조절하려고 하면 어떻게 해야 하나요?

    > 그리고 Buffer을 사용하지 않고 Str값을 바로 조작하여 Write의 파라메터로 넘길 수는 없나요? 제가 사용한 방법 말고 좀 더 효율적인 방법이 있으면 알려 주세요!

    >

    > 파시칼에서 스트링 형 변환은 너무 어려워요!

    > 도와 주세요!

    >

  • Profile
    이태호 2000.03.10 07:17
    최용일 wrote:

    > 아래와 같이 버퍼를 열린배열로 하고 SetLength를 이용하여 크기를

    > 설정하여주시면 됩니다.

    > procedure Call;

    > var

    > Str : String;

    > Buffer : array of Char;

    > begin

    > Str := '테스트 문자열입니다!';

    > SetLength(Buffer, Length(Str) + 1);

    > StrPCopy(Buffer, Str); <======

    > StgStream.Write(Buffer, Sizeof(Buffer));

    > end;

    >



    답변 감사합니다.

    그러나 다음과 같은 에러 메시지가 뜨네요!

    Incompatible types: 'Array' and 'Char'

    형이 안 맞는 것 같은데...

    다시 한 번 도움 부탁드립니다.



    • 문영봉
    • 2000.03.08 23:52
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 문영봉
      2000.03.09 19:13
      문영봉 wrote: > 제가 ms-sql을 db로 사용하고요... Tdatasource를 써서 직접 연결을 하여 사용하고 > 있...
    • 문영봉
      2000.03.09 19:12
      문영봉 wrote: > 제가 ms-sql을 db로 사용하고요... Tdatasource를 써서 직접 연결을 하여 사용하고 > 있...
    • 문영봉
      2000.03.09 19:12
      문영봉 wrote: > 제가 ms-sql을 db로 사용하고요... Tdatasource를 써서 직접 연결을 하여 사용하고 > 있...
    • topsman
    • 2000.03.08 23:18
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 모양
    • 2000.03.08 22:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.08 22:53
      얼마든지 낮은 버전에서 높은 버전의 폼을 열수 있습니다. 같은 버전에서도 안 열리 는 폼들이 있죠... ...
    • 모양
      2000.03.09 00:54
      최용일 wrote: > 얼마든지 낮은 버전에서 높은 버전의 폼을 열수 있습니다. 같은 버전에서도 안 열리 > ...
    • 최용일
      2000.03.09 02:45
      델파이 Bin디렉토리에 보시면 아마도 Convert.exe프로그램이 있습니다. 이걸 이용하시면 버전에 맞게 바꾸...
    • 류동균
      2000.03.09 08:00
      김하나 wrote: > with AiriForm.AiriSQL do begin > try > Close; > SQL.Clear; ...
    • 김하나
      2000.03.10 23:22
      류동균 wrote: > 김하나 wrote: > > with AiriForm.AiriSQL do begin > > try > > Clos...
    • 차은숙
    • 2000.03.08 21:49
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 좋은날
      2000.03.08 23:36
      차은숙 wrote: > 델파이 초보거든요. > DB에서 Select를 하는데, > 저희 Convention에 의해 > sql문에 ...
    • 혀노
      2000.03.08 23:31
      > Query1.Sql.Add('Where UserId = :UserID'); > > ParamByName('MUserID').AsString := MUserID.Te...
    • 진짜초보
      2000.03.08 21:53
      혹시나 해서 써보는건데요.. ParamByName('MUserID').AsString := MUserID.Text; 를 Params.ParamBy...
    • 차은숙
      2000.03.08 23:17
      아니요... ParamByName('MUserID').AsString := MUserID.Text; 라고 썼는데요. Params.ParamBy...
    • 진짜초보
      2000.03.09 16:15
      차은숙 wrote: > 아니요... > ParamByName('MUserID').AsString := MUserID.Text; > 라고 썼는데...
    • 진짜초보
      2000.03.09 16:15
      차은숙 wrote: > 아니요... > ParamByName('MUserID').AsString := MUserID.Text; > 라고 썼는데...
    • 철이
    • 2000.03.08 21:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.08 22:44
      procedure Form1.Button1Click(Sender: TObject); begin Button2.OnClick; MenuItem1.OnClick; ....
    • cho
    • 2000.03.10 03:52
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김남일
      2000.03.15 21:43
      안녕하세요. 음. 혹시 Record위치를 조정하지 않았나요? Action에서 Table를 Scan 후(eof 까지) Table ...
    • 화랑
      2000.03.10 18:35
      안녕하세요.. 저도 델파이로 웹 프로그래밍을 다 하고 있는데요.. 저는 그런 에러가 전혀 없었거든요? ...
    • 황선희
    • 2000.03.08 20:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이복만
      2010.02.05 04:16
      저의 경우 변수를 중복 사용하여 발생했었습니다 예를 들어 SpeedButton 3개가 있는데 각각의 버튼 이...
    • 델사랑
    • 2000.03.08 20:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 조복기
      2000.03.08 20:53
      델사랑 wrote: > 한수 부탁합니다. > 델에서 폼을 캡쳐해서 프린터하는 방법좀 가르쳐주세요. > 내공이 ...
    • 델사랑
      2000.03.09 01:43
      조복기 wrote: > 델사랑 wrote: > > 한수 부탁합니다. > > 델에서 폼을 캡쳐해서 프린터하는 방법좀 가...
    • 델초
    • 2000.03.08 19:23
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김지희
      2000.03.08 22:08
      dictionary정보를 참조하시면 되겠네여. USER_CONSTRAINTS와 USER_CONS_COLUMNS 를 보시면... 델초...
    • 델초
      2000.03.08 22:52
      감사합니다만 Select문에서 어떻게 사용해야 할 지 몰라서요..
    • 김지희
      2000.03.08 23:50
      select C.table_name, C.constraint_name, C.constraint_type, CC.column_name ...원하는 필드명...
    • 이태호
    • 2000.03.08 19:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.08 20:01
      아래와 같이 버퍼를 열린배열로 하고 SetLength를 이용하여 크기를 설정하여주시면 됩니다. procedure Ca...
    • 이태호
      2000.03.10 07:17
      최용일 wrote: > 아래와 같이 버퍼를 열린배열로 하고 SetLength를 이용하여 크기를 > 설정하여주시면 됩...