Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2015, 16:41   #1
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию Правильно ли отработает Copy

Не хочу высчитывать длину строки, нужно копировать весь текст из переменной s начиная от 3 символа и до конца строки, поэтому указал немного лишнего.
Я так понял функция Copy скопирует в переменную s1 без ошибок если найдет и 10 символов в строке s за место 20? Верно ли это?
Код:
s1:= Copy(s, 3, 20);
NIKOLAYY2 вне форума Ответить с цитированием
Старый 21.01.2015, 16:58   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Верно ли это?
Программирование в уме, что ли? Проверь что вернет и вопросов не будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.01.2015, 16:58   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Лучше сделай так
Код:
s1:= Copy(s, 3, Length(s));
FaTaL вне форума Ответить с цитированием
Старый 21.01.2015, 17:03   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Все фун.кции/процедуры из "магии компилятора" (Delete, Copy и т.д. и т.п) проверяют выход за длину строки. Так что ошибок не будет.
northener вне форума Ответить с цитированием
Старый 21.01.2015, 17:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Все фун.кции/процедуры из "магии компилятора" (Delete, Copy и т.д. и т.п) проверяют выход за длину строки. Так что ошибок не будет.
точно.

поэтому, я каждый раз, когда пишу:
Код:
s1:= '';
if Length(s)>2 then
  s1:= Copy(s, 3, Length(s)-2);
мучаюсь сознанием того, что делаю в коде множество лишних и бессмысленных действий, ибо процедура Copy() внутри сама всё проверит и сделает как надо!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.01.2015, 17:45   #6
NIKOLAYY2
Форумчанин
 
Регистрация: 23.12.2014
Сообщений: 220
По умолчанию

northener
Цитата:
(Delete, Copy и т.д. и т.п) проверяют выход за длину строки.
О хорошо, вот это я и подумал что эти функции сами это делаю но не был уверен, тогда и лишние проблемы с проверкой отпадают.

FaTaL
Нормально тоже пойдет, так и сделаю.
NIKOLAYY2 вне форума Ответить с цитированием
Старый 21.01.2015, 18:55   #7
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от NIKOLAYY2 Посмотреть сообщение
northener
Нормально тоже пойдет, так и сделаю.
Так в Вашем случае будет лучше, если вдруг строка будет более 20 символов, которые Вы указали в первом посте.
FaTaL вне форума Ответить с цитированием
Старый 22.01.2015, 02:06   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
точно.

поэтому, я каждый раз, когда пишу:
Код:
s1:= '';
if Length(s)>2 then
  s1:= Copy(s, 3, Length(s)-2);
мучаюсь сознанием того, что делаю в коде множество лишних и бессмысленных действий, ибо процедура Copy() внутри сама всё проверит и сделает как надо!
Сразу вспоминается что-то из Н. Островского про бесцельно прожитые годы
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать родительский класс, в котором будут оценки студентов за сессию. Создать класс потомок, в котором будут оценки ( Delphi ) De199 Помощь студентам 10 05.03.2014 10:55
Программисты будут править миром ds.Dante Свободное общение 19 12.08.2013 13:50
Чему будут равны фортран выражения? Su-34 Помощь студентам 2 15.02.2012 11:30
За форумы будут сажать mihali4 Свободное общение 16 05.01.2010 21:03