Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310

Unsafe code only allowed in unsafe procedure

25.08.2011, 13:54. Показов 2818. Ответов 14

Студворк — интернет-сервис помощи студентам
Доброго времени! Писал программу листинг к-ого
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
program Project2;
 
{$APPTYPE CONSOLE}
{$UNSAFECODE ON}
{$T-}
uses
  SysUtils;
var
  PInt: ^Integer;
  x: Integer;
begin
  x := 3;
*  PInt := @x;
*  Writeln(PInt^);
  Readln;
end.
Отмеченные строки - ошибка, к-ую выдаёт компилятор. Oшибку выдаёт вот такую
Unsafe code only allowed in unsafe procedure
Как исправить такую ошибку?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.08.2011, 13:54
Ответы с готовыми решениями:

Подскажите, выдает ошибку unsafe code asm
Функция для подсчета времени. При запуске выдает ошибку unsafe code asm, помогите разобраться в чем проблема? На Паскале работает отлично,...

Unsafe code requires the `unsafe' command line option to be specified
Как сказать ему что можно использовать unsafe код? (пишу в repl.it)

Error 1 Unsafe code may only appear if compiling with /unsafe
Как исправить ошибку Error 1 Unsafe code may only appear if compiling with /unsafe ? как скомпилить с модификатором unsafe?

14
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2011, 14:07
{$UNSAFECODE ON}
А это что и для чего? Мой Делфи7 это не понимает, а без него нормально выводит число 3.

Добавлено через 3 минуты
А, это прибамбас для .net
0
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310
25.08.2011, 14:09  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
{$UNSAFECODE ON}
А это что и для чего? Мой Делфи7 это не понимает, а без него нормально выводит число 3.
Да, на Delphi 8 .NET директива включения небезопасного кода

Добавлено через 40 секунд
А на дельфи 7 ещё не пробовал, а как на дельфи 8 решить такую проблему?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2011, 14:11
Так тебе это и не нужно вроде, у тебя же нет подпрограмм, вот прочитал
Для компилятора Delphi for .NET добавлена возможность включения небезопасного кода в приложения .NET. Для этого введена локальная директива компилятора {$UNSAFECODE}, которая может принимать значения ON и OFF а также добавлено ключевое слово unsafe, которое применяется к процедурам и функциям. Приложения, использующие небезопасный код не проходит проверку при помощи утилиты PEVerify. Подробнее о небезопасном коде смотрите в документации .NET SDK.

procedure unsafeProc; unsafe;
begin
end;
1
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310
25.08.2011, 14:17  [ТС]
Подпрограмм нету. Когда убрал директиву эту, то потом выдаёт ошибку в строке
Delphi
1
PInt: ^Integer
Unsafe pointer only allowed if compiling with {$UNSAFECODE ON}
Добавлено через 35 секунд
и выдаёт ещё теже 2 ошибки как и раньше
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2011, 14:19
Подробнее о небезопасном коде смотрите в документации .NET SDK.
Больше ничем помочь не могу, не пользуюсь этим....
1
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310
25.08.2011, 15:29  [ТС]
Хоть на этом спасибо!

Добавлено через 1 час 8 минут
Я смог решить проблему, но я расскажу для всех как такое сделать для пользователей delphi.NET

Чтобы создать приложение с включением небезопасного кода через Delphi.NET нам нужно:
1. Вставить директиву {UNSAFECODE ON} - директива включения небезопасного кода.
2. Создать процедуру или функцию с небезопасным кодом и пометить её ключевым словом unsafe.
Н-р если создадим прогграмму (не модуль):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program proga;
{$APPTYPE CONSOLE}
{$UNSAFECODE ON} // объявление директивы включения небезопасного кода
uses
SysUtils;
procedure unsafecode; unsafe; // метка unsafe (англ. "небезопасный")
var
x: Integer;
Int: ^Integer;
begin
x := 3;
Int := @x;
Writeln(Int^);
end;
begin
unsafecode; // запуск процедуры, к-ую мы объявили
Readln;
end.
На экран выйдет число 3. Программа проверена компилятором Delphi 8 .NET и она без ошибок, разве только выводит 2 предупреждения о операторах @ и ^
Эта программа в основном по теме тип pointer, обычно объявление указателей является небезопасным, но здесь рассказано как уведомить компилятор о разрешении небезопасного кода.

Спасибо информации Puporev:
Цитата Сообщение от Puporev Посмотреть сообщение
Так тебе это и не нужно вроде, у тебя же нет подпрограмм, вот прочитал
Для компилятора Delphi for .NET добавлена возможность включения небезопасного кода в приложения .NET. Для этого введена локальная директива компилятора {$UNSAFECODE}, которая может принимать значения ON и OFF а также добавлено ключевое слово unsafe, которое применяется к процедурам и функциям. Приложения, использующие небезопасный код не проходит проверку при помощи утилиты PEVerify. Подробнее о небезопасном коде смотрите в документации .NET SDK.
procedure unsafeProc; unsafe;
begin
end;
И как ещё сказано
Цитата Сообщение от Puporev Посмотреть сообщение
Подробнее о небезопасном коде смотрите в документации .NET SDK.
1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2011, 15:32
Кстати стало интересно, скачал самоучитель по Delphi8.net ни слова нет про это.
0
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310
25.08.2011, 15:36  [ТС]
Да, я тоже ничего об этом не нашёл в самоучителе по delphi 8 .NET я как раз по нему и занимаюсь

Добавлено через 2 минуты

Не по теме:

Там не рассказано ещё об типе

Delphi
1
a: file of тип_файла;
К-ый какбы не предусмотрен вроде для Delphi 8.Net - выдаёт ошибку при таком коде:
Unsupported language feature: 'typed or untyped file'
разве только в конце книги сказано
Тип file
Традиционный для языков Pascal и Delphi тип file, по-видимому, запрещен
в Delphi для .NET. Уже давно разработчики Delphi рекомендовали вместо типа file
использовать потоки.

0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2011, 15:41
Обычное описание типизированного файла. А почему нет? Во всех Делфи это вроде есть.
Попробуйте написать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var f:file of integer;
      i,a:integer;
begin
assignfile(f,'file');
rewrite(f);
for i:=1 to 10 do
 begin
  a:=random(100);
  write(f,a);
 end;
reset(f);
while npt eof(f) do
 begin
  read(f,a);
  write(a,' ');
 end;
closefile(f);
readln
end.
0
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310
25.08.2011, 15:46  [ТС]
Ошибочка насчёт строки
Delphi
1
f:file of integer;
выходит в Delphi 8.NET
Unsupported language feature: 'typed or untyped file'
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2011, 15:53
Попробуй так
Delphi
1
2
type intt=integer;
var f:file of intt;
Добавлено через 31 секунду
В ABC.net все работает...

Добавлено через 37 секунд
А нафига Вам это уродство нужно?

Добавлено через 19 секунд
Я про Делфи8.net
0
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310
25.08.2011, 15:56  [ТС]
Я Delphi 7 for Win32 тоже владею, но решил ещё изучить наряду с Win32 платформу .NET
Такую же ошибку выдаёт в строке
Цитата Сообщение от Puporev Посмотреть сообщение
Delphi
1
var f:file of intt;
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.08.2011, 16:03
Ну давай, мучайся, в том кривом самоучителе все написано как у меня. Его какой-то чурбан списал с учебника по Делфи 5...
0
...
 Аватар для Андрей Утюмов
28 / 29 / 0
Регистрация: 18.08.2010
Сообщений: 310
25.08.2011, 16:09  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Его какой-то чурбан списал с учебника по Делфи 5...
Видимо да
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2011, 16:09
Помогаю со студенческими работами здесь

Ошибка "Unsafe code may only appear if compiling with /unsafe"
Почему,когда я метод Main() помечаю как опасный словом "unsafe" ,сразу выдаёт ошибку? Ошибка: Unsafe code may only appear if compiling...

Unsafe code и NullReferenceException
Добрый день. Столкнулся с этой проблемой уже давно и понять ее, как бы я не пытался - не могу. Есть бот, большая часть которая...

Две переменных по одному адресу без unsafe code - возможно ли
Если у меня есть два объекта разных типов A и B. Можно ли без использования unsafe code сделать так, чтобы поля (например, типа int)...

Unsafe
Доброго времени суток. Подскажите пожалуйста,как использовать unsafe в windows forms. Перебрал все настройки проекта,не нашел, как...

Unsafe код из с++ на с#
Не уверен в той ли ветке пишу вопрос, но может кто знает.. есть код на ++ необходимо создать аналог на шарпе. Этот код является аналог ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru