| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Turbo Delphi Win32 pro - некачественный продукт! |
| Автор: Злоумышленник 9.4.2007, 21:27 |
| Сегодня начальник дал диск с лицензионной Turbo Delphi for Windows Professional и сказал установить и "теперь на ней работать будем". Я был не в восторге от того, что предстояло загадить свою машину .NET'ом, но приказ есть приказ - установил, зарегистрировал и стал смотреть. И тут начались проблемы и неприятный сёрпрайзы, которые продолжались весь день... Попробую их описать. Я часто открываю файла из окошка "Open file", при попытке из такого окошка из-под TDWin32 открыть "с помощью" D7 проект (надо было) получил "файл не найден". При попытке открыть из проводника при одновременном выделении более 3-х файлов (я пробовал с dpk) часть из них параллельно начинала открываться и в Блокноте. Несмотря на быструю загрузку на старте среда она явно тормозила в работе (P4 1.8ГГц, ОЗУ1Гб), в частности переключения между закладками, и закрытие-открытие закладок в редакторе кода. По непонятным причинам иногда запускались 2 экземпляра TDWin32. Получил Internal error (или что-то типа того) при компиляции разок, вылечилось перезапуском среды. Хотел потрассировать прогу, на ошибке вместо перехода в отладчик получил зависание (возможно конечно виноват компонент EhLib4.1, но в D7 такого небыло НИ РАЗУ). Кстати, прога нормально работала после комиляции в D7. Получил проблемы при попытке установить JVCL и any-dac c инстоллятора - требовался dcc32.exe, вот в D7 он есть, а тут не оказалось. Пришлось гемморойно ставить вручную и терять время. Как уже говорил, EhLib4.1 выдавал ошибки, на D7 всё ок - возможно недоработка компонента, но при попытке отладить - висяк. Били ещё проблемы и периодически. Времени разбираться было мало, всего 1 раб. день, но осталось стойкое впеч впечатление глючной вещи, по мелочи, но всё равно неприятно. Также покоробил неудобный интерфэйс с тупым закосом под бестолковую MS Visual Studio. Странно, я заглядываю на форум, но ничего подобного не видел в темах. Разве что мольбы "как мне переделать бесплатно бесплатный Explorer в Professional?" |
| Автор: Sergius 9.4.2007, 21:44 |
| Странно, как только вышел бесплатный Explorer, скачал и поставил. Все летает и не тормозит, АМД 1.5ГГц, ОЗУ512Мб, не лагает. Вопрос: что я не так делаю? |
| Автор: Злоумышленник 9.4.2007, 21:53 | ||
| Sergius, могу только предположить, что ты не работаешь над серьёзными проектами (раз на эксплорере сидишь) Yanis,
|
| Автор: Yanis 9.4.2007, 21:59 | ||
В Borland тоже, между прочим, люди работают. Я их не защищаю, хоть и сам встречаюсь с глюками и странностями. Наверняка в твоём софте тоже есть ошибки. |
| Автор: Alexeis 9.4.2007, 22:08 |
| Меня страшно убивают частые "слеты" справочной системы. Я уже готов убить Борланд за это. Из-за сильных зависимостей от всяких сторонних фич, установка разных программ, той же студии от Microsoft приводит к глюкам. Глюки есть жуткие при использовании DelphiSpeedUP. На счет интерфейса я наоборот в восторге, ИМХО стал намного лучше и удобнее семерки. Глюк остался при выделении прямоугольного фрагмента текста, но к счастью исправили некоторые глюки которые были в семерке. Язык теперь стал по настоящему мощным. Но все это временные трудности, которые нужно 1 раз преодолеть, а потом забыть и наслаждаться мощью и продуманностью. |
| Автор: Sergius 10.4.2007, 06:41 | ||
Ну в общем то вы правы, мы еще есть студент, и до серьезных прожектов нам еще ой как далеко... |
| Автор: iddqd 10.4.2007, 07:33 | ||
Самое глупое высказывание на этом форуме, которое я видел. К слову у MSVS фейс, да и вобще сама среда, продуманы в разы лучше, чем у дельфи. Сам не так давно перешел с дельфи на си# на работе. |
| Автор: Beltar 10.4.2007, 07:34 | ||||||||
2 Alexeis
Ага. MS-Help падает так надежно, что переустановка в помощь. Borland поступили очень глупо написав IDE на .NET, удивляюсь, что BDS 2006 вполне работоспособна и глючит ненамного больше семерки. И вообще тратили время на эту нафиг ненужную интеграцию, чтобы в итоге опять выпустить Turbo-версии. Но что они могли сделать со справочной системой, если MS запрещает распространять старые версии справки? Злоумышленник
Internal Error часто возникает, когда компилятор по какой-то причине не может переписать exe'шник. Сталкивался и в D7 и в BDS 2006.
Мне как-то моча в голову стукнула связный список себе сделать. Естественно, при работе с таким классом, чтобы получить значение Items[i] трассировщик должен выполнить мой код доступа, а я туда MessageDlg запихал. Результат обалденный, Delphi сообщение показать не может и виснет намертво. Добавлено через 12 минут и 46 секунд
Без 19-дюймового монитора плюсами VS стиля воспользоваться сложно. Просто обалдеть как умно сделали, вывалили в debug-mode такую кучу окон, что кода не видно. Ну как часто надо отображать Call Stack или регистры CPU? Понадобяться, вызовем. И приходится сразу все лишнее убирать и сохранять Desctop. Может это мелочь, установил, настроил один раз и забудь, но все равно глупо и неприятно. А вообще VS одним своим видом может вогнать в шок. В BDS мне VS-стиль нравится тем, что при дизайне формы, можно палитру с компонентами справа поставить и с ней работать удобней, чем в D7, но это если форма на нее не залезает. Local Variables радует, но я почему-то ни разу ей не воспользовался. |
| Автор: Snowy 10.4.2007, 09:59 |
| 1. Поставить все патчи. 2. Если турба куплена, значит есть аккаунт покупателя на CodeGear или возможность его завести - скачай dcc32. Я так понимаю, что куплена электронная лицензия, а не коробочная, иначе бы всё было в комплекте. А так - докачивайте с кодегира. 3. Поставь DelphiSpeedUp. Согласен, что бывает глючит. Но... Кто ищет глюки - тот их найдёт. Бывает сглючивает. Примерно раз в 2 недели. Но это приемлемо. |
| Автор: aktuba 10.4.2007, 10:06 |
| Странно. Твоих глюков не наблюдал, а вот один свой есть =))) При выгрузке TD - процесс занимает 100%. TD не выгружается. Приходится по Ctrl+Alt+Del выгружать =(((( |
| Автор: Rennigth 10.4.2007, 10:36 | ||
никогда не было... в отличии от семерки. :( Незнаю, особо страшного в Turbo еще ничего не видел. Все новое пишу уже только на ней. Небольшие проекты с семерки уже перевел на нее, т.к. (покрайней мере у меня) работает стабильнее. |
| Автор: MetalFan 10.4.2007, 12:41 |
| работаю в BDS2006.... стоят эксперты GExperts и CnPack. если закрывать среду с открытым проектом (группой проектов) и несколькими открытыми файлами частенько валится с кучей AV. НО если перед выходом из IDE закрыть все открытые проекты (File-CloseAll), то все ок. никаких AV. |
| Автор: aktuba 10.4.2007, 13:29 | ||||
А у меня наоборот никогда такого в семерке не было... Новые проекты пишу на TD, а старые пока не переношу...
Что-то мне подсказывает, что дело тут не в BDS |
| Автор: Yanis 10.4.2007, 13:33 |
В ней. У меня тоже такое часто бывает при закрытии среды. Поэтому я пользуюсь пунктом Close all and terminate process для выхода |
| Автор: Beltar 10.4.2007, 14:01 | ||
Если долго работать. И никакие эксперты на это не влияют. |
| Автор: Ch0bits 10.4.2007, 19:03 |
| offtopic А что поменялось в языке со времён D7? |
| Автор: Yanis 10.4.2007, 19:11 |
Да хотя бы хелперы и перегрузка операторов. |
| Автор: Ch0bits 10.4.2007, 19:16 |
Это вроде если под .net писать? А меня интересует win32. |
| Автор: Yanis 10.4.2007, 19:20 | ||
|
| Автор: Злоумышленник 10.4.2007, 19:20 |
| С D7 было относительно мало проблем. Настолько мало, что я их сейчас перечислю. Самая основная (и знаменитая) - при закрытии среды вываливается окно об ошибке (Access Violation или что-то типа того). Как правило, возникает подобное если часто прогонять программы через отладчик, поэтому без необходимости это не делаю и не ленюсь, компилирую и запускаю из проводника. Иногда эксешник криво компилируется. И также при программировании с наследованием форм при внесении визуальных изменений в родитель D7 не всегда сразу переносит изменения в наследники. Здесь нужно быть аккуратным и придерживаться следующего: а) делать не compile, а build (чуть-чуть дольше); б) взять за правило - чем меньше открытых модулей с формами, тем лучше. Т. е. ненужные модули лучше закрывать, я так всегда делаю. Ну конечно же пора обновить интерфэйс, но по-умному. Из того, что есть я бы только редактор кода хотел бы видеть как в Turbo, палитру компонентов надо оставить как есть вверху. Кое-какие вещи имеют логическую ошибку. Например, если сделать копию с папки проекта и не убрать dsk-файл, попробовать что-то поменять в этой папке-копии - сами знаете, на какие грабли можно наступить. Это ВСЁ! В остальном D7 стабильная, удобная и такая послушная... Иногда бывают проблемы из-за компонетов сторонних, но в новых версиях всё исправляется авторами. |
| Автор: Ch0bits 10.4.2007, 19:30 |
| Yanis, так это в рекордах, а как дела с классами? Вообще не представляю как с ней работали, там же рефакторинга не было! |
| Автор: Yanis 10.4.2007, 19:37 |
Прекрасно. |
| Автор: Ch0bits 10.4.2007, 19:37 |
Нашёл! - http://dn.codegear.com/article/34324 Глядя на изменения просто поражаюсь! Как вообще можно было писать программы на D7. |
| Автор: Snowy 10.4.2007, 19:55 |
| Это не всё ;-) http://dn.codegear.com/article/34323 http://dn.codegear.com/article/34324 http://dn.codegear.com/article/34325 |
| Автор: Злоумышленник 10.4.2007, 20:01 |
| Ch0bits, очень не впечатлило, лучше бы VCL до ума довели. От DBGrid тошнит уже несколько лет. |
| Автор: Yanis 10.4.2007, 20:03 | ||
Консерватизм в твоём случае тебе не на пользу. Мне тоже было тяжело пересесть с семёрки. Всё казалось неудобным. Глюков было почему то больше. Просто твоя привычка не даёт тебе объективно судить достоинства турбы. |
| Автор: aktuba 10.4.2007, 20:37 | ||||||||||
У меня такого на D7 не было. Может просто везет, а может апдейты ставить надо?
НЕ НАДО!!! Я когда первый раз сел за Турбу - тоже не удобно было. А теперь вот неудобно в D7, в плане размещения компонентов.
Она такая стабильная, потому что построена на основе D5 и много лет доводилась до ума. А TD сделана на основе BDS, ей намного меньше. Но, снова таки, ставь апдейты и проблем будет меньше. Ну а если сравнивать D7 и TD как оружие, то D7 - это автомат, а TD - это уже, как-минимум, пулемет. =)
А я, к своему стыду, до сих пор не понимаю, для чего он нужен... Ну не было и ладно...
VCL - это дополнение к языку. Приоритетная задача - все же развитие самого языка. |
| Автор: Alexeis 10.4.2007, 20:45 |
| Кое с чем я уже успел познакомиться, но увидев новые возможности 2007го... ну просто в шоке. Особенно впечатлила функция одновременного изменения идентификаторов в блоке, а новые возможности классов так вообще! По части гибкости работы с классами тут даже С++ отдыхает. Да теперь код можно писать еще более прозрачным, строго указывая области видимости. Вот насчет раздельного тестирования модулей не совсем ясно. Кто в курсе, что это такое, раскажите подробнее. |
| Автор: Ch0bits 10.4.2007, 21:20 | ||
Юнит-тестирование, архиполезная вещь в крупных проектах, пришло из мира java. Проще говоря, когда проект состоит из множества классов и пишется командой разработчиков, мы имеет сильные зависимости. И например, когда в какой-либо класс вносятся изменения, мы не можем точно определить, как это отразится на проекте в целом. Юнит-тестирование позволяет определять правильность работы ключевых звеньев проекта при каждом изменении одной из его составляющих. И ещё: http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D1%82-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 |
| Автор: Snowy 10.4.2007, 21:26 |
| Alexeis, почитай доку или описание по DUnit. Я смотрел, трогал... Мне это не нужно. Я могу спокойно 2 недели строчить код, потом за 5 минут поправить все очипятки и всё работает. Проверять работоспособность модулей и классов для меня дико - там же в коде всё написано |
| Автор: Ch0bits 10.4.2007, 21:37 |
| Вот ещё статейка - http://www.exprogramming.ru/Articles/LoveUT.html Snowy, потому что один разработчик может держать весь проект в голове. А что если пройдёт пара лет и нужно что-то поменять? Хотя если в комментариях ВСЁ написано... |
| Автор: Snowy 10.4.2007, 22:12 | ||
Даже на форуме порой решения даю с комментами формата автодокументатора Добавлено через 4 минуты и 40 секунд ЗЫ. Когда проходит пара лет, смотришь на свой код и думаешь: "Ну и хрень... Неужели это я написал?!" |
| Автор: Злоумышленник 11.4.2007, 05:32 | ||
Snowy,
Хм... а у меня наоборот, смотрю через пару лет и удивляюсь, как же аккуратно и грамотно когда-то сделал |
| Автор: Beltar 11.4.2007, 10:08 | ||||||
2 Yanis
Боюсь, что нет. Перегрузка операторов для классов только под .NET. Alexeis
Когда мне приспичило поменять имя мегаглобального для программы типа, я от рефакторинга чуть не кончил. 30 секунд на операцию. 2 Ch0bits
Такие значит классы. Друг от друга зависимые. |
| Автор: Rennigth 11.4.2007, 10:29 |
| |
| Автор: Alexeis 11.4.2007, 10:40 | ||||
Речь уже идет о Delphi2007 for win32, как я понял в ней ввели и для обычных классов.
Так и нужно было чудес ждать, текстовые операции всегда длительные, а если бы переменную использовал, в нескольких модулях, тогда что? Нужно соизмерять возможности операций. В рамках функции средних размеров, все должно отлично работать. Кстати использование всяких глобальных переменных и гигантских функций, как раз говорит о плохом стиле кода. Переменные должны рождаться и умирать в блоках. Такие объекты как формы как правило уникальны, а операции изменения имени черезвычайно редки, потому тут вполне можно и поиском обойтись. Если приходиться часто менять переменные в таких блоках, то следует серьезно задуматься о организации приложения. |
| Автор: Beltar 11.4.2007, 11:56 | ||||
30 секунд это включая мои действия.
Ну дык круто блин. Вон в Chrome, так и шаблоны есть. Чем же Сишники размахивать будут, когда они и в Delphi появятся. |
| Автор: Yanis 11.4.2007, 12:10 | ||
Нека. К сожалению я ошибся. Для обычных классов нет перегрузки операторов. |
| Автор: Alexeis 11.4.2007, 13:00 |
Зато она есть для Advanced Record в Win32. Это как раз и важно, складывать Ежиков с помидорами мало кому прийдет в голову. А для объектов метода Assign(), хватает с головой, чтобы присвоить по значению. Всякие + - шапочки и хвостики удобны для работы с элементами, т.е. простыми объектами, которые вполне теперь могут быть реализованы при помощи Advanced Record. Причем не могут, а должны быть таковыми ведь размер прародителя TObject, думаю многих останавливает, при создании объектов состоящих из 2х 3х integerов. Из-за этого KOL и строилась на старых паскалевских объектах. Для больших и сложных объектов операторы слишком неочевидны, чтобы их использовать. Методы куда понятнее. Но странно, что в обзоре не написано, что только в Win32, от чего напрашивается вывод, что 2007 они будут и в Win32. Нужно уточнить... |
| Автор: Beltar 11.4.2007, 15:18 | ||
2 Alexeis
Кстати, а в новых язычишках типа Gentee и AFAIR Оберона структура и класс идентичны. Вроде неглупые люди делают, но я так и не уловил идеи, ведь объект, как правило большой и передается по ссылке, редко Assign, а структура вполне может копироваться. |
| Автор: s-mike 11.4.2007, 15:50 |
| Ну не обучен у нас народ к пользованию лицензионными продуктами. На сайт CodeGear заходил? Хотфиксы ставил? Должен заметить, что после установки всех хотфиксов среда работает достаточно стабильно. |
| Автор: Yanis 11.4.2007, 15:53 | ||
Разговор с эхом |
| Автор: Alexeis 11.4.2007, 16:01 | ||
| Beltar, все объекты в Delphi наследники TObject; Т.е. они по размеру не меньше него самого.
Т.е. нас ожидает табличка VMT на 9 методов. т.е. 9 * 4 = 36 байт + сам объект + указатель на VMT в объекте, т.е. стартуем как минимум уже с 40 байт. Если у нас 2 переменные типа Integer, то размер 48 байт. Итого в лучшем случае 85% размера объекта не наши, а родного TObject. При количестве переменных порядка 10 интов, лишние расходы уже 50%. Вот и задумаешься, когда создаешь список из 100000 таких объектов. У Advanced Record, такого быть не должно, так как она не наследник TObject. |
| Автор: Beltar 11.4.2007, 18:05 |
| 2 Alexeis Дык это понятно. Непонятно, почему несмотря на это в ряде новых языков структуры и класс объединены. |
| Автор: Snowy 11.4.2007, 18:57 |
| Они объеденены только в строго ОО языках. В концепции ОО нет понятия структура в её классическом виде. А так это принципиально разные вещи. Структура - блок данных. А объект - набор свойств и методов набором правил, определяеммых классом данного объекта. При всей своей схожести они очень разные. Объект, имеющий поля, может совершенно не хранить никаких данных. А, если и хранит, то далеко не факт, что вообще в одном месте, не говоря уже о порядке следования байт в памяти. Но не понятно к чему это? К сабжу никаким ухом не привязано. |
| Автор: maxim1000 11.4.2007, 18:57 | ||
так в объекте хранится VMT или указатель на неё? (а то и то, и то посчитано) обычно хранится указатель на VMT, т.к. нет смысла хранить кучу одинаковой информации для каждого объекта а уже где-нибудь в глобальной памяти - VMT для каждого класса |
| Автор: Alexeis 11.4.2007, 20:34 |
| maxim1000, ты прав таки она уникальна тольк для каждого класса. |