Q&A

  • WideString을 어떻게 하면 좋습니까?
델파이로 작성된 COM에 Record를 보내려구 하였습니다.

그냥 Record를 보낼 수 없어서



WideString으로 변환해서 보내려구 합니다.





그런데 레코드를 그냥 string으로 바꾸면 아무 이상없는데

바꿔지 string을 WideString으로 바꾸면

이게 이상하게 자꾸 한글자씩 빼먹구 난리입니다.



이걸 어떻게 고치면 좋겠습니까? 정말 죽겠습니다.



제발 도와주세요.







type



TSubRec = record

SubOn : Boolean;

Svr : string[32];

DB : string[32];

View : string[32];

end;



TRecord = record

cbSize : Integer; // Size of this structure

Version : Integer;

MainOn : Boolean;

Pass : string[32];

MainView : string[32];

CommonDB : array[0..15] of TSubRec;

ChkTime : Integer;

end;



procedure TForm1.Button1Click(Sender: TObject);

var

s : string;

ARecord : TREcord;

WRecord : widestring;

SRecord : string;

begin

ARecord.cbSize := SizeOf(TRecord);

ARecord.Version := 50;

ARecord.MainOn := True;

ARecord.Pass := 'abcd';



SetString(SRecord, PChar(@ARecord), SizeOf(TRecord));



WRecord := WideString(SRecord); // 이 두줄에서 자꾸 글자를 빼먹습니다.

s := string(WRecord); //





CopyMemory(@ARecord,PChar(s),SizeOf(TRecord));

Edit1.Text := ARecord.Pass; end;



1  COMMENTS
  • Profile
    화랑 2001.11.12 11:44
    그냥 편하게..



    Varriant Array로 데이터 전송하시져~~ 그것이 편할것같은데요.. ^^



    맘이아파요 wrote:

    > 델파이로 작성된 COM에 Record를 보내려구 하였습니다.

    > 그냥 Record를 보낼 수 없어서

    >

    > WideString으로 변환해서 보내려구 합니다.

    >

    >

    > 그런데 레코드를 그냥 string으로 바꾸면 아무 이상없는데

    > 바꿔지 string을 WideString으로 바꾸면

    > 이게 이상하게 자꾸 한글자씩 빼먹구 난리입니다.

    >

    > 이걸 어떻게 고치면 좋겠습니까? 정말 죽겠습니다.

    >

    > 제발 도와주세요.

    >

    >

    >

    > type

    >

    > TSubRec = record

    > SubOn : Boolean;

    > Svr : string[32];

    > DB : string[32];

    > View : string[32];

    > end;

    >

    > TRecord = record

    > cbSize : Integer; // Size of this structure

    > Version : Integer;

    > MainOn : Boolean;

    > Pass : string[32];

    > MainView : string[32];

    > CommonDB : array[0..15] of TSubRec;

    > ChkTime : Integer;

    > end;

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > s : string;

    > ARecord : TREcord;

    > WRecord : widestring;

    > SRecord : string;

    > begin

    > ARecord.cbSize := SizeOf(TRecord);

    > ARecord.Version := 50;

    > ARecord.MainOn := True;

    > ARecord.Pass := 'abcd';

    >

    > SetString(SRecord, PChar(@ARecord), SizeOf(TRecord));

    >

    > WRecord := WideString(SRecord); // 이 두줄에서 자꾸 글자를 빼먹습니다.

    > s := string(WRecord); //

    >

    >

    > CopyMemory(@ARecord,PChar(s),SizeOf(TRecord));

    > Edit1.Text := ARecord.Pass; end;

    >