Q&A

  • delphi에서 cpp 호출하는데 잘안되여..-,-
델파이로 전문송수신하는 프로그램을 맹글고 있는데여..
cpp를 호출해서 메시지를 송신하는 부분에서 잘안되서여..
record형 pointer를 선언하고,
edit1.text내용을 전송하는데 전송하면 space만 가고 실제내용은 안갑니다.
고수님덜 도와주세여..초보라...미리답변감사해여..
----------------
type
  pident = ^identrec;
  identrec = packed record
            ident : string[10] ;
            refcount : string[10];
end;
type
  pctPkt  = array [1..100] of char;
..........
function MgsWrite(wrt_buff: pointer; rtn_buff: pointer): integer stdCall; external 'MsgSend.dll';
// CPP로 작성된 dll을 호출.. msg_send int MgsWrite(char *wrt_buff, char *rtn_buff)
............
var
  WrtBuff : pident;
  RtnBuff : ^pctPkt;
................
procedure TForm1.Button2Click(Sender: TObject);
var
str1, str2 : string;
i,j,k,l,MsgLen  : integer;
Maxlen : integer;
begin
  Maxlen := 10;
  new(WrtBuff );
  new(RtnBuff);
try
try
  j := length(trim(edit1.Text));
  str1 := edit1.Text ;
  k := length(trim(edit2.Text));
  str2 := edit2.Text ;

  for i:= j + 1 to Maxlen do
    str1 := str1 + #32;
  for l:= k + 1 to Maxlen do
    str2 := str2 + #32;

  WrtBuff^.ident := str1;
  WrtBuff^.refcount := str2;
   begin
     Memo1.Lines.Add(WrtBuff^.ident +  WrtBuff^.refcount);
     MsgLen := MsgWrite(WrtBuff,RtnBuff);  // 메시지를 write하고 메시지길이를 return받음
     Edit3.Text := IntToStr(MsgLen );
   end;
  except
  on E: Exception do
   Memo1.Lines.Add(Edit1.Text + Edit2.Text);
  end;
finally
  dispose(WrtBuff);
  dispose(RtnBuff);
end;
end;

2  COMMENTS
  • Profile
    김철권 2002.11.07 03:22
    type
      pident = ^identrec;
      identrec = packed record
                ident : array[0..9]of char ;
                refcount :array[0..9]of char;
    end;

    이렇게 변경하셔서 해보시길 바랍니다.


  • Profile
    소영이 2002.11.07 18:26