word 형을 byte 형으로 어떻게 바꾸나요?
word 형 포인트 변수에서 byte 형 포인트 변수로 바꾸려합니다.
DLL을 호출하는데 word형 포인터로 데이터를 읽고 그 데이터 버퍼를
byte형으로 DLL에 넘겨줘야합니다.
Buffer:array [0..1000] of word];
buffer_Point:^longint;
// 버튼1 이벤트 WORD형 데이터 읽기
var
Buffer_Size:longint;
begin
Buffer_Point:=@Buffer;
Buffer_size:=LoadBuffer(longint(Buffer_point));
// 버튼2 이벤트 바이트형 데이터 주기
var
Buffer_Size:longint;
begin
//여기서 변수 전환이 있어야할것같은데..
Buffer_Point:=@Buffer;
Buffer_size:=StoreBuffer(longint(Buffer_point));
C에서는 이렇게 하는것같아요.
Buffer_Size=((Byte*)Buffer);
모두들 행복하세요..
StoreBuffer 인자값으로 전달되는 것은 LongInt형의 주소를 전달하는 것이기 때문에
Word 형이든 Byte형이든 구분하지는 않습니다. StoreBuffer 의 선언은 다음과 같을 경우
에 한해서 지요.
function StoreBuffer(Buffer_point: LongInt): Integer;
단지 Dll 측에서 LongInt형의 값을 받아 Byte포인터 형으로 변환해주는 로직은 필요하지요.
따라서 Dll 측에서 고려되어야 할 사항이고 호출하는 쪽에서는 관계가 없는것 같습니다.
변환은 아마도 이런 코드가 될것입니다.
var
ByteBuffer: PByte;
ByteBuffer := Pointer(Buffer_Pointer);
좀더 자세한 사항은 직접 사용하신 StoreBuffer 함수의 선언 부분이 있어야겠습니다.
---
김동식 wrote:
> word 형을 byte 형으로 어떻게 바꾸나요?
> word 형 포인트 변수에서 byte 형 포인트 변수로 바꾸려합니다.
>
> DLL을 호출하는데 word형 포인터로 데이터를 읽고 그 데이터 버퍼를
> byte형으로 DLL에 넘겨줘야합니다.
>
>
>
> Buffer:array [0..1000] of word];
> buffer_Point:^longint;
>
> // 버튼1 이벤트 WORD형 데이터 읽기
> var
> Buffer_Size:longint;
>
> begin
>
> Buffer_Point:=@Buffer;
> Buffer_size:=LoadBuffer(longint(Buffer_point));
>
> // 버튼2 이벤트 바이트형 데이터 주기
> var
> Buffer_Size:longint;
>
> begin
>
> //여기서 변수 전환이 있어야할것같은데..
> Buffer_Point:=@Buffer;
> Buffer_size:=StoreBuffer(longint(Buffer_point));
>
>
> C에서는 이렇게 하는것같아요.
> Buffer_Size=((Byte*)Buffer);
>
> 모두들 행복하세요..