반응형
PChar := String이나
array of Char := String 대입은 되지만
wideString이나 wideChar계열은 그게 안되죠..
그래서 제가 아래와같이 했습니다.(좀 한심하죠)
C의 내용을 Pascal로 포팅하는 중 필요해서 만들었죠..
/////////////////////////////////////////////////
// WideString을 WCHAR 에 넣는다.
// aPWChar := aWideString 이렇게 되도록,...
/////////////////////////////////////////////////
procedure StrToWCBuffer( var Buf; Sentence: WideString );
var
SrcPtr, DstPtr: Pointer;
nI: DWord;
begin
SrcPtr := Pointer( Sentence );
DstPtr := @Buf;
nI := Length( Sentence );
asm
mov ecx, nI
xor ebx, ebx
shr ecx, 1
jnc @StartCopy
inc ebx
@StartCopy:
mov esi, SrcPtr
mov edi, DstPtr
rep movsd
test ebx, 1
jz @skip
movsw
@Skip:
mov word ptr [ edi ], 0 // Finally, write terminate char.. end;
end;
end;
array of Char := String 대입은 되지만
wideString이나 wideChar계열은 그게 안되죠..
그래서 제가 아래와같이 했습니다.(좀 한심하죠)
C의 내용을 Pascal로 포팅하는 중 필요해서 만들었죠..
/////////////////////////////////////////////////
// WideString을 WCHAR 에 넣는다.
// aPWChar := aWideString 이렇게 되도록,...
/////////////////////////////////////////////////
procedure StrToWCBuffer( var Buf; Sentence: WideString );
var
SrcPtr, DstPtr: Pointer;
nI: DWord;
begin
SrcPtr := Pointer( Sentence );
DstPtr := @Buf;
nI := Length( Sentence );
asm
mov ecx, nI
xor ebx, ebx
shr ecx, 1
jnc @StartCopy
inc ebx
@StartCopy:
mov esi, SrcPtr
mov edi, DstPtr
rep movsd
test ebx, 1
jz @skip
movsw
@Skip:
mov word ptr [ edi ], 0 // Finally, write terminate char.. end;
end;
end;
----------------------------------------------------
출처 : 델마당(http://www.delmadang.com/)
반응형