Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что за сообщение? [D6]


Vudu ©   (2005-07-08 17:38:00) 

Delphi выдает такое сообщение при запуске проекта что оно значит и вредно ли это?
Unsafe code 'String index to var param'
примерно в таком месте
 for i:=1 to Length(shifr) do
 begin
   shifr[i]:=chr(ord(shifr[i])+77);
 end;
делаю небольшое шифрование для сохранения в файл


Vudu   (2005-07-09 00:19:00) [1]

Я все время забываю про эту процедуру, да и привык уже


begin...end   (2005-07-08 18:57:00) [2]

> Vudu   (08.07.05 17:38)

> вредно ли это?

Вряд ли. Отключить можно в настройках проекта: Project -> Options -> Compiler Messages -> Warnings -> Unsafe code.

> shifr[i]:=chr(ord(shifr[i])+77)

Можно проще (хотя и с тем же warning'ом): Inc(shifr[i], 77).


Vudu   (2005-07-08 18:47:00) [3]

А ну да не 6 а 7, слегка ошибся.
сообщение выходит в нижнем дополнительном окошке build, на работу программы невлияет
( shifr[i] это строка ) на цикл она невлияет


Игорь Шевченко   (2005-07-08 17:50:00) [4]

При запуске сообщения выдает сам проект


Просто Джо   (2005-07-08 17:47:00) [5]

.
>  [1] Просто Джо ©   (08.07.05 17:44)

Поспешил. Невнимательно прочитал вопрос. Но, тем не менее, по поводу версии Делфи ты наверняка привел неверную информацию


Просто Джо   (2005-07-08 17:44:00) [6]

Что-то я очень сомневаюсь, что Делфи 6 выдает сообщение об unsafe code...
А смысл сообщения таков:
нечего в процедуру в качестве var параметра передавать индекс цикла. Потому что внутри этой процедуры ты можешь изменить его. А это есть очень и очень не гуд.
П.С. У меня на Делфи 6 такой код вообще не скомпилится:

procedure X (var Param: Integer);
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
begin
 for I := 0 to 10 do
   X(I)
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо