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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2010, 16:09   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Unsafe code "String index to var param"

Как бороться с таким предупреждением?
Код:
Function GetCom(CS : String) : String;
Var
 _S : String;
Begin
 _S[1] := CS[5];
 _S[2] := CS[6];
 _S[3] := CS[7];
 Result := _S;
End;

Function FirstParam(SE : String) : String;
Begin
 Result := '   ';
 Result[1] := SE[09];
 Result[2] := SE[10];
 Result[3] := SE[11];
End;
Предупреждает о красных строках.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.03.2010, 16:16   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Задать длину строки))
Код:
SetLength(_S, 3);
А с Result должно по идее нормально пройти, но попробуй ему тоже длину строки задать принудительно

Последний раз редактировалось psycho-coder; 21.03.2010 в 16:22.
psycho-coder вне форума Ответить с цитированием
Старый 21.03.2010, 16:25   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Попробовал удалять все (кроме 3-х требуемых символов) с помощью Delete. Вроде молчит.

А из-за чего такая ошибка и что она означает?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 21.03.2010, 17:24   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Возможно, то что в этих индексах может не быть нужных символов, и тогда будет выход за границы массива
psycho-coder вне форума Ответить с цитированием
Старый 21.03.2010, 18:01   #5
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

При объявлении переменной типа string она имеет нулевую длину. Нельзя работать со строкой по индексу не задав ее длины setlength(Result, 3) и т.д. для всех обявляемых переменных типа string
или же делать так: Result := Result + copy(SE,9,1);
И это предупреждение мне кажется относится даже не к параметру вводимому в подпрограмму а именно к переменной Result и т.д.
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 22.03.2010, 21:19   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Alex Cones, а не проще сделать так:
Код:
Function GetCom(CS : String) : String;
Var
 _S : String;
Begin
 _S := CS[5] + CS[6] + CS[7];
 Result := _S;
End;

Function FirstParam(SE : String) : String;
Begin
 Result := SE[9] + SE[10] + SE[11];
End;
Получиться, вроде, должно то же самое.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 22.03.2010, 21:28   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Alex Cones, а не проще сделать так:
Если что-то уже работает - предпочитаю не вмешиваться. Был бы этот вариант раньше - взял бы его
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.03.2010, 22:52   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Может тогда move поможет?
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
у меня в code gear 2007 отсутствует компонент richview,где его можно скачать "бесплатно" betirsolt Компоненты Delphi 10 05.01.2010 23:11
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Компилируется но не работае. Возможно проблема в "string" Pirotexnik Общие вопросы Delphi 12 28.03.2009 00:46
Работа с String Grid - помогите написать "Табель рабочего времени" Deicider Помощь студентам 3 29.11.2006 20:59