Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.038 c
1-1095702519
bloodman
2004-09-20 21:48
2004.10.10
Возможно ли при помощи TButton.perform сэмулировать зажатую...


1-1096034724
ShproTT
2004-09-24 18:05
2004.10.10
Delphi+MS Word


14-1095554579
Думкин
2004-09-19 04:42
2004.10.10
С днем рождения! 19 сентября


1-1096020892
П7
2004-09-24 14:14
2004.10.10
Позднее связываение Excel и OLE контейнер


4-1092148739
DeadMeat
2004-08-10 18:38
2004.10.10
ScreenShot





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский