Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TServerSocket


Страницы:   1 2

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()


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо