st: string[100];
st_out: string[200];
ворос по string
Код:
Код:
while true do begin
s_clnt:=accept(s, @addr_from, @len);
while true do begin
rec:=recv(s_clnt, st, 100, 0);
if rec=0 then break
else begin
writeln(st);
st_out := 'Echo on '+ inet_ntoa(addr_from.sin_addr)+ ': ' +st;
send(s_clnt, st_out, length(st_out)+1, 0);
st:=''; //!!!!!!!!!!!!!!!!!!!!!!!!!!
end;
end;
s_clnt:=accept(s, @addr_from, @len);
while true do begin
rec:=recv(s_clnt, st, 100, 0);
if rec=0 then break
else begin
writeln(st);
st_out := 'Echo on '+ inet_ntoa(addr_from.sin_addr)+ ': ' +st;
send(s_clnt, st_out, length(st_out)+1, 0);
st:=''; //!!!!!!!!!!!!!!!!!!!!!!!!!!
end;
end;
проблема в том что кода посылаешь серверу строку (с клиента написаного с помощью Tclientsocket: clientsocket1.Socket.SendText(edit1.Text);) то сервер ее принимает, но когда посылаешь следующую строку меньшего размера (всмысле меньше символов), то начало предыдущей строки затирается новой, а вот конец от старой строки высвечивается и ессесно получается какаето ерунда....там где в коде стоят воскл. знаки - эта строчка почумуто проблему не решает..... как быть?
и еще сервер отображает пришедшую строку st только со второго символа, это почему, как это устранить?
Код:
FillChar(st,100,0);
или
Код:
ZeroMemory(@st,100);
а это что за ansi строки такие?
Цитата: Maniak
а это что за ansi строки такие?
Безразмерные. Ключевое слово string с указанием размера описывает ShortString.