안녕하세요!!
indy client로 서버와 통신하는 프로그램을 제작중인데요
서버에서 요구하는 datatype는
int형 4 byte + Pchar형 20 byte 입니다!!!
첫번째 int형은 null + null + null + 0ox00 형태로 요구하구요
( int 형 0을 핵사로 포기하고 앞자리는 null로 채운 형태를 요구함)
두번째 Pchar형은 Pchar 형으로 채우고 남어지 부분은 오른쪽에 null 로
채워야 됩니다..
그래서 구현한 소스가 아래와 같은데 뭐가 잘 못되었는지 에러가 발생됩니다!!!
(물론 datatype 가 잘못됬다는 내용의 에러입니다!!)
방법1
var
Thechar1 : arry [0..19] of char;
begin
StrPcopy(TheChar1,'0000123456');
IndyClient1.WriteLn (#0#0#0chr($0) + Thechar1);
end;
---------------------------------
방법2
var
Thechar1 : arry [0..3] of char;
Thechar2 : arry [0..19] of char;
begin
StrPcopy(TheChar1,'0');
StrPcopy(TheChar2,'0000123456');
IndyClient1.WriteLn (TheChar1 + Thechar2);
end;
Thechar1 : arry [0..19] of char;
-> Thechar1 : array [0..19] of char;
일단은... arry -> array 로 바뀌어야 하구요 .. 음... 이실수는 아니시겠지엽.
님의 프로그램을 아래와같이 옮겨봤습니다.
memo1에 보이는 16진수값이 구하시려는게 맞는지. 확인 바랍니다.
만약에 맞다면.. result 값을 보내세요.. IndyClient1.WriteLn (result);
전 인디를 안써서.. 보내는게 저게 맞는지 모르겠네엽..
procedure TForm1.Button1Click(Sender: TObject);
var
Thechar1 : array [0..19] of char;
Result,s : String;
i : integer;
begin
StrPcopy(TheChar1,'0000123456');
result := #0#0#0+chr($0) + Thechar1;
s:= '';
for i:=1 to length(result) do
begin
s := s+ format('%2x',[ord(result[i])])+' ';
end;
memo1.Lines.Add(s);
end;