서버에 접속하는 모든 클라이언트의 IP 를 저장하기위해..
전 string 배열을 섰습니다.
--> List : array[1..10] of string;
즉 요런식으로 List[i] := AThread.Connection.Binding.PeerIP;
이렇게 접속하는데로 차례로 배열에 넣었지요..
그런데.. 이목록들을 클라이언트 요청에 의해 목록을
전달해야 하는데.. 이때 문제가 생기더군요..
String은 포인터 이기 때문에 배열목록을 날리면..
그것을 받는 클라이언트의 배열목록은 주소값이라 제대로된
문자열이 안된다고... ㅡ,.ㅡ;..
고수님들이라면.. 이런 프로그램에서 어떤방법으로 해결하실건지요..
다양한 방법이 있을 거라 생각이 되는 군요..
간단한 예제를 좀 부탁드리구요... 도와주시면 감사하겠습니다..
요걸로만 오늘까지 3일째군요.. 제가 워낙 실력이 없어서요..
P.S 최용일님
저번에 답변 감사드립니다..
그런데.. 그렇게 해봐도.. 안되더라구여..
Server 쪽에서는 여전히 잘 되구여.. Client는 여전히 깨진 문자열만이..
그래서 이렇게 다시 질문을 올림니다..
최용일님 답변에 다시 질문 하려고 했는데..
어느새 페이지가 2번째로 넘어갔더군요..
////////////////////////////////////////////////////////
string대신에 zero-based 문자배열을 사용하세요...
type
TListData = array[0..255] of Char;
type
pDataBuf = ^TDataBuf;
......
List : array[1..10] of TListData;
end;
개인적인 견해로는 포인터 사용은 옛날 방식 인 듯 합니다.
제가 10년에 C로 짤적에 어쩔 수 없이 (DOS용은 640KB까지만 사용. 뒤에
확장 메모리까지 해서 1메가 이상 최대 4메가까지) 사용은 했지만
지금은 보통 128메가, 많으면 512메가정도로 쓰더군요.
메모리 문제로 포인터라면 방식을 바꾸시구요. 포인터의 장점은 속도가
빠르다는데 있다는 것 밖엔...
아래 질문에 대한 답변은 전 회사 다닐때 3-Tier 프로그램 개발을 몇년간
했었는데 우리는 WideString이라고 해서 클라이언트가 보내는 문자는
일반 String, 서버에서 받고, 되돌릴 적에는 WideString으로 했었습니다.
그러면 다계층 프로그램에서 DATA 전송은 쉽게 되더군요. 그럼...