안녕하세요..제 힘으론 도저히 풀수 없는 문제여서 이렇게 도움을 청합니다..
채팅프로그램을 만들고 있는데, 클라이언트에서 받은 데이타들을 서버에서
저장하는데 Table 대신 TList를 이용하려 합니다..
다음은 채팅방을 만드는 부분입니다..
type
TRoom = Record
Rcode : string[10];
Rid : string[20];
Rgubun : string[2];
Rsubject : string[2];
Rtitle : string[30];
Rnum : string[2];
Ropen : string[1];
Ruser : TList;
end;
type
TRCode = record
date : string[8];
Rcode : string[5];
end;
type
TRUser = record
Ruser : string[20];
end;
이렇게 선언하고, 폼이 create될 때 RoomList := TList.Create; 시켰습니다..
그리고..서버소켓이 클라이언트에서 보낸 데이터를 읽는 부분에서 다음처럼..
procedure TfmChatSvr.ServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
pRoom : ^TRoom;
begin
New(pRoom);
pRoom^.code := TList.Create;
CodeAdd(datetimetostr(now), inttostr(x)); // 이렇게 써도 되나요?
pRoom^.id := data1;
pRoom^.gubun := data2 ;
pRoom^.subject := data3;
pRoom^.title := data4;
pRoom^.num := data5;
pRoom^.open := data6;
pRoom^.user := TList.Create;
RoomList.Add(pRoom);end;
end;
procedure TfmChatSvr.CodeAdd(date : string; Rcode : string);
var
code : TList;
pCode : ^TRCode;
begin
if RoomList.Count = 0 then
x := 1
else
inc(x);
New(pCode);
pCode^.date := date;
pCode^.Rcode := Rcode;
code.Add(pCode);
end;
(data1...data6은 클라이언트에서 받은 메세지를 잘게 쪼겐 것입니다..)
문제는 Rcode(채팅방 코드번호)가 자연증가되데 한계가 있다는 점입니다..
(채팅방은 만든 후에 채팅이 끝나면 삭제되기 때문에 코드증가에 한계가 있어서..)
또 하나는 TList안에 TList 가 들어가 있는데 이걸 어떡해 처리해야 할지...
코드가 너무 엉망이지요..?
TList에 대해선 완전 초짜라서...제 질문에 고수님들의 자세한 답변 기다립니다...(질문이 이해가 되셨는지 잘 모르겠습니다..ㅜㅜ;)