![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]()
После перехода на Delphi 7.0 мои проекты оказались полны всяких варнингов.
Так как хочеться получить проект без варнингов, обращаюсь к вам за помощью, как переписать программу так, что бы этих варнингов не создавалось (про то что можно убрать галочку в компиляторе я в курсе, но хочется именно прогу сделать "грамотно"). 1. Мне нужно сохранять числа типа longword в файл. Объявляю sLong: file of longword потом всякие AssignFile(sLong,'c:\temp.txt'); и получаю варнинг Unsafe type 'sLong: file of Cardinal' Чего в этом криминального? Как делать правильно? Потоком писать? 2. Сложение/вычитание знаковых и безнаковых типов. У меня есть положение в файле и смещение. Положение в файле безнаковое, смещение знаковое. Ну по логике вещей положение не может быть отрицательным, а смещение может быть как вперед так и назад. Выдает варнинг. Положение делать знаковым не хочется, так как тогда допустимый максимальный размер файла будет меньше. 3. procedure TForm1.MailDblClick(Sender: TObject); begin ShellExecute(Handle,'open',PChar('m ailto:'+(Sender as TEdit).Text),nil,nil,SW_SHOWNORMAL) ; end; Unsafe type 'PChar' |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
Тщательней относитесь к выбору типа операндов, выбирайте такой тип, который надежно будет обеспечивать выполнение программы. Если программа пустяковая, то на предупреждения можно и не обращать внимания, но "красивше" когда их нет. Например в первом случае у вас тип longword как-то перекочевал в Cardinal. Получаете прдупреждение о ненадежности этого типа, т.к. его длина в два раза меньше и если размер переменной, объявленной в первом типе превысит длину второго типа, начнутся неприятности ну и т.д.
|
![]() |
![]() |
![]() |
#3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Не пойму ваших проблем...
Все они решаются достаточно элементарно. К тому же в хэлпе семерки есть шикарные подсказки по поводу перехода с предыдущих версий. Более того, перепроверил приведенное вами - никаких вАрнингов вообще нет, единственное - пришлось вручную подключить ShellAPI... Последний раз редактировалось mihali4; 22.01.2008 в 10:55. |
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#5 | ||
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]() Цитата:
![]() Цитата:
![]() |
||
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]() Цитата:
По поводу размерности типов Cardinal и LongWord Цитата:
|
||
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]() |
![]() |
![]() |
![]() |
#8 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Цитата:
![]() |
||
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]() Цитата:
You have used a data type or operation for which static code analysis cannot prove that it does not overwrite memory. In a secured execution environment such as .NET, such code is assumed to be unsafe and a potential security risk. Я понял это все так: используется код, анализ которого не позволяет компилятору понять, переписывает ли он память или нет, что считается небезопасным. Ну ладно, с пчарами это еще похоже на правду (хотя не понятно как же делать надо). Но каким образом это все относиться к тому, что файл у меня лонгвордовский и как же поступить - ума не приложу ![]() |
|
![]() |
![]() |
![]() |
#10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Я чет не пойму, а в чем траблы то? - проги то работают... Али нет?
I'm learning to live...
|
![]() |
![]() |