함수에서 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의 파라메터로 넘길 수는 없나요? 제가 사용한 방법 말고 좀 더 효율적인 방법이 있으면 알려 주세요!
파시칼에서 스트링 형 변환은 너무 어려워요!
도와 주세요!
설정하여주시면 됩니다.
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의 파라메터로 넘길 수는 없나요? 제가 사용한 방법 말고 좀 더 효율적인 방법이 있으면 알려 주세요!
>
> 파시칼에서 스트링 형 변환은 너무 어려워요!
> 도와 주세요!
>