Если бы он просто не заработал, то я бы забил и оставил как есть. Только, к сожалению, он будет работать всегда, но правильно ли. И в данном случае неверное поведение может обернуться серьезными финансовыми потерями. В общем, есть документированная особенность, а есть фича. Я хочу узнать статус текущего поведения.
TStringList внутри использует обычный массив (правда строки динамические, а не фиксированные, плюс указатель на объект). Класс добавляет свои методы и оптимизирует некоторые операции. С ним просто нужно уметь работать (не забывать про BeginUpdate, EndUpdate и пр.).
Например, как вы будете считывать файл в массив? Читать построчно, увеличить размер массива на 1, заносить в последний элемент строку? И каждый раз массив будет копироваться в памяти туда-сюда. Можно при необходимости увеличивать размер массива каждый раз на тысячу (или любое другое число), но за этим уже нужно следить (хранить где-то реальное число элементов и работать с ним). В TStringList это уже реализовано. Нужен поиск по массиву? Перебором искать медленно. Давайте отсортируем и будем искать делением. Так это в TStringList уже тоже реализонова :) И так далее.
@dedik Отнёс в сервисный центр HP, звонил изначально туда же. У меня HP EliteBook, гарантия 3 года по серийному номеру (без чека и гарантийного талона), никаких "пломб" на нём не было (можно было спокойно вскрывать самому). Но, что интересно, в сервисном центре уже пломбу поставили.
Я все прекрасно понимаю. Мне скрипт написать?
<source><?php
header('Content-Type: application/octet-stream');
readfile('game.exe');
echo chr(0) . $_GET['name'];</source>
В программе открываем свой exe на чтение, переходим в конец, идём назад в поисках нуля, достаём строку.
furyk, по сути метод checkProduct должен находиться в моделе «товар»: product->isAvailable(). Так вот и вопрос, где вызывать этот метод, в моделе или контроллере.
Записывается в БД. Но ведь по сути моделе «корзина» все равно, есть товар на складе или его нет. И модель не должна теоритически знать, как пользователю красиво что-то показать (например, предложить альтернативный товар в случае отсутствия текущего).
Т. е. проверять в моделе. А если я захочу выводить разные сообщения (например, «товар не найден» и «товар закончился»), то придется еще возвращать код ошибки (или выкидывать исключения)?
Тогда придется везде таскать за собой id свойств (в корзине, в таблице заказов и т. д.). Плюс неоднозначная работа с такими базовыми параметрами как «цена», «количество».