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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2013, 16:43   #1
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос Зачем у "TStringList" свойству "Count" иметь знаковый тип (Integer) ?

При сравнении с какой-либо положительной переменной (Cardinal-тип) в программе можно наблюдать ворнинг:
W1023 Comparing signed and unsigned types - widened both operands
malor вне форума Ответить с цитированием
Старый 26.04.2013, 17:49   #2
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Телепаты в отпуске. Код в студию.
hon вне форума Ответить с цитированием
Старый 26.04.2013, 17:56   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Предупреждающие сообщения можно отключить. По поводу Integer вопрос разработчикам
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.04.2013, 20:18   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

malor

Зачем у "TStringList" свойству "Count" иметь знаковый тип (Integer) ?

Потому что это говнокод.
Rififi вне форума Ответить с цитированием
Старый 26.04.2013, 21:03   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
Зачем у "TStringList" свойству "Count" иметь знаковый тип (Integer) ?
А почему небо голубое? {C0rK@3m}

Integer, потому, что:
1. Если строк нет, то Count = 0
2. Строк может быть сильно дофига.
3. Числа проще сравнивать, чем строки.

Цитата:
W1023 Comparing signed and unsigned types - widened both operands
Потому что DWORD(он же cardinal) не может иметь отрицательных чисел, а Integer может.
И если в переменную Cardinal вы запихаете число Integer, скажем -1, то будет ошибка.
Потому вас и предупреждает об этом компилятор.
Человек_Борща вне форума Ответить с цитированием
Старый 26.04.2013, 21:14   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Integer, потому, что:
1. Если строк нет, то Count = 0 - DWORD нулем не может быть?
2. Строк может быть сильно дофига - в DWORD влазит дофига*2
3. Числа проще сравнивать, чем строки. - DWORD тоже не строчка

Так что в некотором смысле DWORD было бы по крайней мере не хуже Integer. Хотя возможно и есть подводные камни, которых в упор не вижу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.04.2013, 21:16   #7
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос

Человек_Борща, вы в моем вопросе прочитали какой-то другой вопрос и развернуто на него ответили.

Rififi, какая строчка кода оказалась говнокодом?
malor вне форума Ответить с цитированием
Старый 26.04.2013, 21:56   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вспоминаем например TListBox, у него индекс -1 нужен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.04.2013, 23:20   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Цитата:
Человек_Борща, вы в моем вопросе прочитали какой-то другой вопрос и развернуто на него ответили.
ага........
Цитата:
W1023 Comparing signed and unsigned types - widened both operands
Человек_Борща вне форума Ответить с цитированием
Старый 27.04.2013, 00:50   #10
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вспоминаем например TListBox, у него индекс -1 нужен.
index, но не count. Количество не может быть отрицательным, это все равно что делить на ноль.
В долг никто никому ничего не дает.
"У меня -50000р на счету, пришли какие-то люди выносить мою мебель."
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42