Форум: "Потрепаться";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизЧто-то я совсем запутался... чем может быть не надежн этот Найти похожие ветки
← →
Программер_ (2004-09-22 11:45) [0]способ отправки данных через компоненты TServerSocket &TClientSocket
var
Delitel:String=#10#13;
Buffer:String;
....
Function ReadLnBuffer(Buffer:Pointer):String;
var
P:integer;
begin
Result:="";
P:=Pos(Delitel,String(Buffer^));
If p=0 then exit; //Ждем следующего пакета
Result:=Copy(String(Buffer^),1,P-1);
Delete(String(Buffer^),1,p+1);
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s:String;
begin
Buffer:=Buffer+Socket.ReceiveText;
S:=ReadLnBuffer(@Buffer);
While S<>"" do
begin
Memo1.Lines.Add(S);
S:=ReadLnBuffer(@Buffer);
end;
end;
← →
VMcL © (2004-09-22 11:50) [1]Что курим?
← →
Программер_ (2004-09-22 11:59) [2]VMcL © (22.09.04 11:50) [1]
Нужно плучать данные (Простые Строки) с учетом фрагментации
← →
VMcL © (2004-09-22 12:11) [3]>>Программер_ (22.09.04 11:59) [2]
Раз нужно, получай. Я ничего против не имею. Вопрос в чём?
← →
VID © (2004-09-22 12:16) [4]НА http://delphibase.endimus.ru есть решения этой проблемы
← →
Программер_ (2004-09-22 12:22) [5]Я там был уже, вот там довольно сложные варианты ,
меня интересует что может быть ненадежно если между строками просто ставить разделитель типа #10#13 , для чего нужно что более сложное или я еще не в курсе чего-то?,
Конкрето чем лучше релизация на http://delphibase.endimus.ru ?
← →
Digitman © (2004-09-22 12:57) [6]
> String(Buffer^));
...
> S:=ReadLnBuffer(@Buffer);
и зачем эти выкрутасы с нетипиз.указателями, косвенной адресацией и разыменованиями ?
разве нельзя объявить передаваемый параметр просто как var Buf: String ?
и вот еще - а если передается "пустая строка" ? По твоей логике если ф-ция ReadLnBuffer() вернула "", это означает что в буфере нет "целиком" доставленной строки, но это же неверно ! "Пустая" строка тоже имеет право на существование !
← →
Программер_ (2004-09-22 13:28) [7]Исправился ,
Вместо
While S<>"" do...
While Length(S)>0 do...
все или еще есть замечания по коду?
← →
Digitman © (2004-09-22 13:48) [8]код дерьмовый в принципе
бесконечные перераспределения памяти при работе строковых ф-ций
вариант передачи/приема перед каждой строкой ее длину, может, и будет чуть посложнее, зато позволит минимизировать операции с памятью
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.05 c