안녕하세요..
아래와 같이 소켓 통신을 이용하여 핵사 코드를 전송하려 합니다.
근데 ..배열로 선언해준 다음과 같은 데이터 값을 클라이언트로 전송하려 하는데요
키다운 이벤트를 이용하여 서버의 메시지 창에서 1을 쓰고 엔터를 치면 data1의 값이
전송되고..2를 치면.. data2의 값이 전송되고..이렇게 원하는 키를 치면 해당 데이터 배열값이 전송되게 하려면 어떻게 하는지 고수님들의 조언 부탁드립니다.
제 생각엔 case문을 쓰면 될거 같은데..에고..이거..원 잘 안되네요 .
그럼..
var
ChatForm: TChatForm;
Server: String;
// 데이터 전송 (헤더 포맷에 맞게 변환)
data1:array[0..11] of byte = ($7f,$fe,$00,$0C,$00,$00,$00,$00,$00,$80,$00,$09);
data2:array[0..11] of byte = ($7f,$fe,$00,$0C,$00,$00,$00,$00,$00,$81,$01,$0b);
data3:array[0..11] of byte = ($7f,$fe,$00,$0c,$00,$00,$00,$00,$00,$82,$02,$0d);
data4:array[0..11] of byte = ($7f,$fe,$00,$0c,$00,$00,$00,$00,$00,$83,$03,$0f);
data5:array[0..18] of byte = ($7f,$fe,$00,$13,$00,$00,$00,$00,$00,$84,$04,$14,$00,$01,$01,$00,$00,$00,$2e);
data6:array[0..11] of byte = ($7f,$fe,$00,$0c,$00,$00,$00,$00,$00,$85,$05,$13);
data7:array[0..23] of byte = ($7f,$fe,$00,$18,$00,$00,$00,$00,$00,$86,$06,$01,$01,$01,$01,$01,$01,$01,$01,$01, $01,$01,$01,$2c);
data8:array[0..11] of byte = ($7f,$fe,$00,$0c,$00,$00,$00,$00,$00,$87,$07,$17);
data9:array[0..24] of byte = ($7f,$fe,$00,$19,$00,$00,$00,$00,$00,$88,$08,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$39);
data10:array[0..11] of byte =($7f,$fe,$00,$0c,$00,$00,$00,$00,$00,$89,$09,$1b);
data11:array[0..19] of byte =($7f,$fe,$00,$14,$00,$00,$00,$00,$00,$8a,$0a,$01,$01,$01,$01,$01,$01,$01,$01,$2d);
data12:array[0..19] of byte =($7f,$fe,$00,$14,$00,$00,$00,$00,$00,$8b,$0b,$01,$02,$03,$04,$05,$06,$07,$08,$4b);
keydown 이벤트... (1을 누르면 array에서 선언해준 data1이 전송되고.. 2를 누르면 data2.. 이렇게 해주려면
아래의 코드를 어떻게 처리해야할 지 모르겠습니다. 좀 알려주세용....case문을 쓰면 될거 같은데.. 이놈의 파스칼이 내맘대로 안되네여. 흑흑흑. )
procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
if IsServer then
ServerSocket.Socket.Connections[0].sendbuf(data1,11)
else
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
Clientsocket.socket.sendbuf(data1,11);
end;