Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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. К сожалению код не мой - мне его приходится доделывать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:04.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025