![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятная проблема с буфером в Инди компоненте [D7, WinXP]
h0use © (2003-11-24 15:32:00)
Есть сервер, который слушает порт:
Msg:=AThread.Connection.ReadLn;
if Msg<>">>>" then exit;
AThread.Connection.ReadBuffer(CommBlock,SizeOf(CommBlock));
Есть клиент, котрый шлет на сервер блок данных:
function TfmMain.SendMsg(AMsg:TCommBlock): boolean;
begin
Result:=False;
try
if TCPClient.Connected then
begin
TCPClient.WriteLn(">>>");
TCPClient.WriteBuffer(AMsg,SizeOf(AMsg));
Result:=True;
end;
except
on e: Exception do
ShowMessage("Send Error: "+e.Message);
end; // try/except
Есть сам покет данных одинаковый для сервера и клиента:
type
TCommBlock = record // the Communication Block used in both parts (Server+Client)
Command : Char;
Argument1 : String[10];
Argument2 : WideString;
Msg : WideString;
end;
При том, что при дебаге клиент шлет нормальную инфу, сервер получает тольуо первый и второй аргумент записи нормально, а третий и четвертый - белеберда. В чем ботва?
Reindeer Moss Eater (2003-11-24 15:59:00) [21]
А зачем передавать ИХ?
h0use (2003-11-24 15:58:00) [22]
А как же мне их передавать?
Digitman (2003-11-24 15:53:00) [23]
> h0use
ansistring и widestring - да, как указатели ... почему тебя это шокирует ?
Reindeer Moss Eater (2003-11-24 15:49:00) [24]Он и есть указатель.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1069393748&n=4
h0use (2003-11-24 15:48:00) [25]
Т.е. ты хочешь сказать, что char и string передается как есть, а widestring передается как указатель?
Reindeer Moss Eater (2003-11-24 15:36:00) [26]
Эти аргументы - указатели.
На сервере они так же полезны, как и седло корове