Показать сообщение отдельно
  #1  
Старый 11.11.2010, 12:00
kostinga kostinga вне форума
Прохожий
 
Регистрация: 11.11.2010
Сообщения: 1
Репутация: 10
По умолчанию Ошибка leftstr при обработке строки

Вот такой кусок кода. Sockets - массив сокетов на сервере.
Цитата:
len:=recv(sockets[b],buf,size_buf,0);
s1:=Pchar(@buf);
s:=copy(s1,1,len); или leftstr(s1,len); (пробовал оба варианта)

Строка читается из сокета. Читается нормально - при отладке я вижу, что в s1 прочитано, то что отправлено клиентом. Дальше я обрезаю строку до нужной длины и вот здесь начинается веселье.

Если len до 490 (или около того, 484 символа проходят, 490 - нет) - великолепно работают и leftstr и copy и дальше я спокойно с полученной строкой делаю что хочу.

Если больше 490 но меньше 1000 - работает copy, но leftstr вылетает с Access violation. А после обработки строки, полученной через copy, вылетает pos('\', s) с Access violation.

Если len больше 1000 - ошибку выдает и copy и leftstr. У меня есть подозрение, что это как-то связано с PChar и динамическими строками, но ничего путнего я пока не нашел.

PS. К сожалению код не мой - мне его приходится доделывать.
Ответить с цитированием