![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TServerSocket
Klopan © (2004-08-18 12:47:00)Как с помощью TClientSocket отправить структуру (или тип Pointer) на TServerSocket ?
например
type
TMyrec = record
s: string;
i: integer;
b: boolean;
end;
Klopan (2004-08-20 06:35:00) [21]как я понял:
динамические строки - указатели
статические - неуказатели
как динамическую строку преобразовать в статическую или
как указатель преобразовать в неуказатель.
Зачем посылать переменную k ?
А если структура будет такой:
rec
ss: tstrings;
as: pansichar;
sd: string[30];
vr: variant;
ar: array[0..255] of Char;
end;
Klopan (2004-08-20 03:54:00) [22]так как всетаки послать структуру, неразделяя ее данные?
(
var v: tmyrec;
sendbuf(v, sizeof(v));
)
Digitman (2004-08-19 08:12:00) [23]Удалено модератором
Digitman (2004-08-19 08:12:00) [24]
> а i, это неуказатель?
i - это не указатель
var k: Integer;
..
k := Length(v.s);
ClientSocket1.Socket.SendBuf(k, sizeof(k));
ClientSocket1.Socket.SendBuf(PChar(v.s)^, k);
ClientSocket1.Socket.SendBuf(i, sizeof(i));
k := Length(v.sz);
ClientSocket1.Socket.SendBuf(k, sizeof(k));
ClientSocket1.Socket.SendBuf(PChar(v.sz)^, k);
Klopan (2004-08-18 18:11:00) [25]дайте пожалуйста примерчик, plizz
Klopan (2004-08-18 17:30:00) [26]я непонял :))
можно пример?
а i, это неуказатель?
я вообще незнал что такие бывают и непонимаю разницы между статическими и динамическими строками.
Digitman (2004-08-18 17:22:00) [27]
> Klopan © (18.08.04 17:14) [4]
это потому что ты не понимаешь разницы между статическими и динамическими строками
s и sz есть динамические строки, они представлены указателями, вот те самые указатели (а не то на что они указывают !) ты и передаешь/принимаешь
Klopan (2004-08-18 17:14:00) [28]...
TMyrec = record
s: string;
i: integer;
sz: string;
end;
...
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
v: tmyrec;
begin
Socket.ReceiveBuf(v, sizeof(v));
listbox1.Items.Add(v.s);
listbox1.Items.Add(inttostr(v.i));
listbox1.Items.Add(v.sz);
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
v: tmyrec;
begin
ClientSocket1.Active:= true;
with v do
begin
s:= 'lala';
i:= 543;
sz:= 'gfgfgf';
end;
if ClientSocket1.Socket.Connected then
ClientSocket1.Socket.SendBuf(v, sizeof(v));
//ClientSocket1.Active:= false;
end;
при приеме приходит только переменная i.
s и sz пустые.
Digitman (2004-08-18 13:10:00) [29]что непонятно ?
Klopan (2004-08-18 12:53:00) [30]мне бы примерчик :)) плиз
Digitman (2004-08-18 12:49:00) [31]см. SendBuf()