Как сделать поиск в c builder

Добавил пользователь Alex
Обновлено: 04.10.2024

поскольку мы (я и люди, с которыми я работаю) все больше и больше расстраиваемся при работе с проектами c++ 250 000+ LOC в VS2010 sp1 (медлительность этой IDE просто невероятна), в моей компании мы говорили о переносе нашего кода в другую IDE. Мы провели некоторые исследования, и сильным кандидатом, похоже, является Embarcadero C++ builder 2011 XE. Есть мысли по этому поводу? Это хорошо? Как он сравнивается с VS2010 ultimate?

на самом деле не ответ, но я просто оставлю его здесь:

  1. это стоит денег (да, VS тоже, но вы уже владеете этим, не так ли?)
  2. перенести достаточно большой проект в новую IDE (и компилятор) будет не так просто, не говоря уже о людях, с которыми вы работаете, и их привычках (я бы просто ушел, вероятно).
  3. есть и новый компилятор, с его фирменными ошибками и предостережениями. И он гораздо менее широко используется, чем VC++. Тем не менее, он основан на Clang, который должен поддерживать стандарты лучше, чем VC++, и легче переносить существующий код c++.
  4. сложность миграции сильно зависит от характера вашего проекта (основан ли он на GUI, насколько глубоко он зависит от того, что MS VC++ является компилятором?)

Я использую C++ Builder с 1.0, и я ненавижу его со страстью. Вы могли бы подумать, что после всех этих лет простые маленькие неприятности были бы исправлены к настоящему времени, но это не так. Вот список проблем, которые у меня есть с C++ Builder IDE.

землечерпалка иногда будет работать, а иногда и не работать. В отладочной сборке, если задать точку останова и начать пошаговое выполнение кода, можно навести указатель мыши на переменную для ее проверки. Иногда это работает, иногда это не работает на одной и той же переменной. сумасшедший!

последние версии C++ Builder используют makefile, подобный VS; это беспорядок XML. Eclipse работает с CMake и Makefiles. Я читал в местах, которые сопровождающие CMake ищут Генератор C++Builder, но последний раз я проверял, что этого не существует. Я делаю встроенную и перекрестную компиляцию, поэтому иногда мой код C++ Builder копируется в мою встроенную среду разработки или совместно с ней, и я поддерживаю две среды сборки.

C++Builder поставляется с ограниченной версией AQTime, которая является динамическим профилировщиком кода. Потратьте больше, и вы получите более продвинутую версию. Eclipse поддерживает много динамического и статического анализа кода (который также стоит$$), но, по крайней мере, Плагины есть. Мы используем Klockworx.

C++ Builder не имеет поддержки, о которой я знаю, для внешнего управления версиями, такого как GIT. Затмение делает. C++Builder поставляется с subversion, я думаю, встроенным. Если он поддерживает GIT, я никогда не смогу заставить его работать. Он говорит мне, что не понимает схему URL, когда я даю ему путь git.

определенный код шаблона, который я пишу, заставляет компилятор segfault и должен полностью перезапустить IDE. Это безумие для меня. У вас есть компилятор, которому 10+ лет, и он все еще segfaulting. У меня есть фрагмент кода шаблона C++, который, когда я беру его на свой рабочий компьютер с точно такой же версией C++ Builder, он компилируется нормально, но на моей домашней машине он segfaults. Я абсолютно уверен, что нет никаких неблагоприятных факторов, таких как вирусы и т. д.

при компиляции большого проекта, который может занять много времени, вы не можете просматривать код с помощью IDE. Иногда вы можете увидеть предупреждение компилятора scroll by и вам нужно либо дождаться завершения задания компиляции, чтобы проверить указанную строку, либо использовать альтернативное средство для открытия файла.

C++ Builder IDE имеет концепцию группы проектов с подпроектами, которые более / менее автономны. У проектной группы нет концепции пути включения/ссылки проектной группы, как у подпроектов. Подпроекты имеют базовые, отладочные, выпускные пути, где отладка и выпуск могут наследовать или блокировать из базы, но у вас нет это на уровне проектной группы. IDE имеет глобальные настройки, которые могут быть унаследованы, но это для всего, что вы делаете в IDE. Таким образом, нет способа изменить для данной группы проектов, только пути включения/компоновщика для набора подпроектов. Я просто думаю, что они могли бы сделать это лучше.

выходные данные сборки C++ Builder не закодированы цветом, например, для отображения ошибок красным цветом и предупреждений другим цветом. Все черно-белое. VC и затмение цветовой код и дать возможность изменять цвета для различных предупреждений и ошибок. Вкладка "вывод" в C++ Builder аналогична. В больших проектах очень сложно исследовать предупреждения компилятора с другим шумом. В IDE C++ Builder вы можете выбрать уровень предупреждений, но это влияет только на вывод на вкладке "вывод", и вы все равно получите другой глупый шум, например, сообщите мне об удалении файлов состояния компоновщика " CleanLinkerStateFiles."

Если вы не делаете Windows разработка графического интерфейса рабочего стола, держитесь подальше от Embarcadero / C++ Builder. Я начал использовать C++ Builder версии 1 еще в дни Borland и имею несколько крупных проектов, которые сильно инвестированы в VCL, поэтому я застрял с ним для этих проектов, но все мои новые проекты, я использовал Eclipse.

решитесь. Это предупреждение или Бог ошибка плотины?

прокрутите до конец, где вы найдете лиц, модифицирующих ILINK32.EXE, чтобы заставить его работать снова. С сегодняшнего утра наши сборки перестали работать. Мы лежим мертвые в воде, пытаясь понять и понять, что с этим делать.

это тот тип компилятора/IDE, от которого вы хотите зависеть? Опять же, этот продукт существует уже более десяти лет, и у него все еще есть такие проблемы. Я нахожу это совершенно неприемлемым. Дерьмовый продукт от компании, которой насрать.

нет ничего положительного в Embarcadero XE, ни в их стареющей IDE, ни в их стареющем компиляторе. Используйте его, только если вы привязаны к нему (устаревшее программное обеспечение) или хотите сделать Delphi.

Я бы предложил затмение.

  • как IDE, требуется некоторое время, чтобы привыкнуть, но это хорошо стоить затраченных усилий.
  • он доступен для Mac OS, Linux и Windows.
  • на вашем компьютере должна быть установлена Java, но это действительно не проблема.
  • он поддерживает Cygwin, MinGW и MicrosoftVisual c++ toolchains. Сборка в CdT Builder тоже довольно хороша.
  • вы можете использовать его для разработки на других языках чем C++ (Java, JavaScript, PHP ..)
  • вы можете расширить его функциональность, установив Плагины
  • ЭТО БЕСПЛАТНО!
  • я упоминал, что у него есть встроенный веб-браузер ? Действительно полезно для ссылки на онлайн-документацию при кодировании.

1. У нас есть решение над 1M LOC, и VS2010 обрабатывает его нормально. Нам особенно нравится переключатель /MP для компиляции на всех доступных ядрах процессора.

вы не указали свое оборудование. Если вы еще не работаете по крайней мере на I7-2600 + fast SSD, я предлагаю сначала попробовать аппаратное обновление.

2. В прошлом я часто использовал инструменты Borland. Delphi был довольно стабильным; C++ Builder был гораздо более глючным. Пару лет назад я помог обновить старые проекты Delphi до новых Delphi IDE с установленными пакетами обновления. И у него были ошибки даже в базовом файле Io APIs, который работал с Turbo Pascal. Пришлось откатиться на предыдущую версию. Я ожидаю, что качество C++ Builder будет не намного лучше, чем VS2010.

3. Вы не уточнили, что именно является медленным. Некоторые проекты можно преобразовать в компоненты, скомпилированные отдельно. Также убедитесь, что вы используете PCH.

также стоит исследовать, если вы злоупотребляете моделью включения C++, включив много ненужных заголовочных файлов в каждом блоке. Если после предварительной обработки Intellisense и компилятору приходится иметь дело с огромным количеством кода, никакая IDE не может помочь.

этот вопрос действительно вопрос личного мнения.

Я лично ненавижу Visual Studio со страстью, я избегаю его, как чумы. Мое воздействие на Eclipse было ограничено Java, но даже тогда мне было трудно работать с ним.

Я использую C++Builder в течение 15 лет, начиная с v3.0 вплоть до последнего XE6. Да, у него есть причуды и ограничения, но я все еще нахожу его самой простой IDE для меня, чтобы работать и быть продуктивным, как только вы знаете, как работать с ними (или вокруг них). Может быть, мой опыт с ним мешает моей способности работать с другими ИД, но так тому и быть. Я по-прежнему предпочитаю C++Builder любому другому. Но я использую его только для разработки Windows (VCL очень зрелый и надежный), я еще не делаю кросс-платформенную разработку с ним (FireMonkey все еще имеет способы развиваться и созревать). И я использую много проектов с открытым исходным кодом. Да, иногда мне приходится настраивать их проекты и / или код, чтобы заставить их компилироваться, но это обычно это разовая сделка и тогда они работают нормально.

по причинам, которые не имеют никакого языкового смысла, обработчик событий нажатия кнопки имеет подпись, которая выглядит так:

и он идет в файл заголовка, как и следовало ожидать. The ^ символ не имеет смысла. Использует ли он связь с CLI / CLR лучше? Я ожидал * указывает указатель.

после использования Form1 по умолчанию (создан только файл заголовка) и последующего добавления новой формы windows, я, наконец, получил соответствующий файл cpp. Возможно, мастер Windows Form C++ имеет ошибку. Кто знает? Во всяком случае, при добавлении события button click двойным щелчком кнопки в конструкторе cpp не получает метод ни в одной из проверенных форм cpp. Может, это нормально, не знаю. Конечным результатом этого является то, что после попытки использовать функцию MessageBox в cpp это вызвало только ошибки компиляции. Я уверен, что есть еще один заголовочный файл, который должен быть в пути. Я не отслеживал эту вниз. Попытка установить свойство текста компонента метки также вызвала ошибки компиляции. Примерно через 20 минут я в отчаянии отправился в C++Builder XE3.

в C++Builder я протестировал формы VCL, рабочий стол FireMonkey и создание приложения FireMonkey Metropolis из Мастера проектов. Конечно, у меня есть три разных приложения, говорящих "Hello World", в общей сложности около трех минут, все вызывающие встроенную глобальную функцию ярлыка C++Builder под названием ShowMessage("insert message here") . Время может были немного разные, так как я не засек время с секундомером. Сохранение файлов со значимыми именами заняло больше времени, чем сам код: одна строка ввода в соответствующем теле события click в каждом cpp (а не в заголовке).

о медлительности, упомянутой OP выше, я предлагаю также очень внимательно посмотреть на аппаратную платформу относительно запуска Visual Studio. Я заметил, что если .Net framework устарел, VS будет медленным в среде IDE. Кажется, не имеет значения, на каком языке находится проект. Я использую Visual Studio 2010 Ultimate на параллелях с Windows XP Pro, с 2 виртуальными ядрами. Обычно, VS нормально реагирует в среде IDE. Используя его, я не думаю: "VS слишком медленный."

что касается миграции четверти миллиона строк в C++Builder из VS, я не уверен, будут ли обработчики событий VS преобразовываться каким-либо мастером или другим инструментом миграции. The ^ символ, если он последовательно используется во всех обработчиках событий, может не иметь большого значения для преобразования регулярного выражения, написанного пользователем. Если проект очень тонкий на уровне пользовательского интерфейса и тяжелый в бизнесе правила и данные, преобразование в C++Builder должно быть относительно простым. Я ожидал бы некоторого нового кодирования для нового пользовательского интерфейса нажмите события, передающие взаимодействие пользователя в другие слои. Для прототипирования лучше всего использовать компоненты, учитывающие данные. В обычном запущенном приложении ожидайте, что уровень бизнес-правил будет использовать STL и встроенные структуры данных C++Builder (даже AnsiString c_str() метод) для взаимодействия с компонентами, не связанными с данными. Производительность и пользовательский интерфейс скорее всего, улучшится.

Начать Редактирование

XE5 (Примечание версия пять по состоянию на декабрь 2013 года) должен иметь 64-разрядную поддержку Windows для консольных и форм приложений (например, VCL, FireMonkey Desktop, FireMonkey Metropolis), OS X, iOS (Android в ближайшее время). Полный список см. В разделе C++Builder feature matrix pdf для всех XE5 подробности:

(Редактирование)

Перед многими разработчиками встаёт вопрос выбора. Какую технологическую платформу использовать для написания программ под Android? И довольно часто выбор представляет собой дилемму Delphi (C++ Builder) или всё-таки Java.

Причины этого выбора не случайны:

  • Несмотря на растущую популярность Lazarus и, особенно, Qt им по ряду причин пока ещё трудно конкурировать с коммерческими разработками уровня Delphi и C++ Builder соответственно;
  • Embarcadero, если не единственный, то один из немногих производителей коммерческих средств разработки, которые имеют достаточно серьёзные амбиции в данной области и активно продвигают свою продукцию в этом направлении.
    Также необходимо отметить, что Embarcadero добилась в этом отношении весьма значительных успехов.

Поэтому, что бы ни говорили противники Delphi и C++ Builder, эти решения представляют, и в ближайшее время ещё будут представлять достаточно привлекательную альтернативу традиционной разработке на Java.

Преимущества и недостатки Delphi (C++ Builder)

Первое преимущество использования Delphi и C++ Builder состоит в возможности использования единой кодовой базы для всех платформ, для которых предназначено приложение. Включая код реализующий функционал пользовательского интерфейса.

В случае Java это невозможно. Для Android – Android SDK, для остальных платформ – Swing или другая аналогичная библиотека.

Используемая при разработке под Android библиотека FireMonkey позволяет работать с более удобной объектной моделью компонентов, которая предоставляет доступ ко всем свойствам и событиям.

В Android SDK для описания элементов управления служит XML словарь, а само описание размещается в ресурсах приложения. Для реализации обработки событий в программном коде необходимо вручную инициализировать нужный элемент управления с помощью поиска по ресурсам. А, после этого также вручную инициализировать нужный обработчик (Listener).

Таким образом, разработка с использованием Android SDK требует знания не только Java и объектной модели, но и XML словаря.

При работе с FireMonkey всё гораздо проще. Для того чтобы выполнять весь спектр задач по работе с компонентами достаточно знать тот язык программирования который используется в разработке, то есть Delphi или C++.

Кроме того в FireMonkey есть целый набор готовых компонентов, которые значительно упрощают работу со многими функциями Android. Например, GPS или фотокамера.

Развитый интерфейс самой IDE избавляет программиста от ручного редактирования служебной информации (включая манифест) и т.д.

Следует особо отметить, что Delphi и C++ Builder использует огромное число программистов. Несмотря на то, что библиотека FireMonkey имеет свои особенности и достаточно сильно отличается от VCL, она избавляет от необходимости полного переобучения при освоении новой платформы.

Однако FireMonkey имеет и ряд недостатков.

В этой библиотеке до сих пор сохранилось огромное количество ошибок и недоработок. Это значительно осложняет работу программистам, которые её используют.

Компилятор под Android поддерживает только архитектуру ARM. Поэтому, если в прошивке устройства нет эмулятора для неё, пользователь не сможет запустить приложение.

В Delphi и C++ Builder поддерживаются далеко не все возможности Android. Так с их помощью, например, нельзя написать виджет или службу.

Также не нужно забывать о стоимости. Цены на Delphi и C++ Builder, как по отдельности, так и вместе (RAD Studio), отобьют желание у многих.

В качестве бесплатной альтернативы Embarcadero предлагает AppMethod. Однако она пока оставляет желать лучшего (подробнее можно почитать на Хабрахабре).

Что касается востребованности на рынке труда. Компании, которые использует Delphi или C++ Builder для своих разработок под Android пока исключение. Поэтому спроса на специалистов соответствующего профиля, как такового нет. Возможно, в будущем ситуация изменится.

Преимущества и недостатки Java (работа с Android SDK напрямую)

Возможности по разработке ограничены только используемой версией платформы. Но, это вполне естественно. Как и у большинства платформ, функциональные возможности старых и новых версий Android отличаются.

Возможность полной настройки пользовательского интерфейса с помощью стилей и тем. В Android SDK они реализованы с помощью XML, а не скинов в специальном формате, как это сделано в Delphi и C++ Builder. Поэтому отсутствует необходимость в специальных программных средствах наподобие, Bitmap Style Designer (с помощью неё создаются стили для VCL и FireMonkey).

Единственная специализированная программа, которая необходима для работы с дизайном — графический редактор Draw 9-patch уже входит в состав SDK. Но и она используется только в определённых случаях.

При работе напрямую с Android SDK программист избавлен от технических издержек, которые присутствуют в FireMonkey.

Android SDK и большинство популярных IDE для работы с ним бесплатны. Это даёт преимущества как для компаний (снижение затрат), так и для независимых разработчиков. Особенно, если речь идёт о разработке бесплатных приложений.

Помимо этого, популярность языка Java, доступность как самого SDK, так и IDE, а также отсутствие как таковых ограничений в плане возможностей по разработке положительно сказываются на перспективах трудоустройства. В настоящее время, на подавляющем большинстве сайтов по поиску работы 100% вакансий разработчиков под Android ориентированы на Java. Комментарии, как говорится, излишни.

Работа напрямую с Android SDK, к сожалению, также имеет свои слабые стороны.

Также имеются издержки и у используемой объектной модели.

Вследствие вышеупомянутых особенностей, разработка приложений для Android на Java сложнее, чем с использованием FireMonkey.

Удобство и трудоёмкость процесса разработки во многом зависят от возможностей конкретной IDE и её качества.

Резюме

В качестве обобщения того что было сказано выше преимущества и недостатки обеих программных платформ сведены в две таблицы. Для Delphi и C++ Bulder и Java соответственно.

Разработка под Android с использованием Delphi и C++ Builder

· Достаточно знаний только используемого языка программирования;

· Меньше трудоёмкость разработки;

· Для программистов, которые уже использовали в своей работе Delphi и C++ Builder, нет необходимости переучиваться.

· Обилие ошибок и недоработок в библиотеке FireMonkey;· Поддерживается только архитектура ARM;

· Ограниченные возможности разработки;

· Данное направление практически не востребовано на рынке труда.

Разработка под Android с использованием Java

· Более широкие возможности по разработке интерфейса пользователя;

· Нет проблем, вызванных ошибками и недоработками FireMonkey;

· Android SDK и большинство популярных IDE бесплатны;

· Широкая востребованность на рынке труда.

Можно сделать следующие выводы.

Использование Delphi и C++ Builder имеет смысл если:

Во всех остальных случаях лучше выбрать Java или, в худшем случае, другую альтернативу этому языку.

В этом коде ищется строка где выделяется куча "new", если она найдена то то ищется слово для которого она выделяется. Затем ищется "delete" с указателем на это слово, что, мол, всё правильно завершено. Проблемы заключается в следующем: если "delete" с словом не находит то должно записываться строка "Ненайдено освобождение", а оно ну никак не выскакивает!. Я пробовал и так:

И если Pos==0 тоже.Ну ничего не получается, он либо циклиться, либо ничего не показывает.

Почему ты пишешь строку "Ненайдено освобождение" в тот же ричедит, что обходишь в цикле?

Кто тебя так научил? а если я "delete object ;" напишу? это будет корректно, (если правильно полнял что-то типа анализатора С++ пишешь), но вот твой "парсер" будет толдычить, что "Ненайдено освобождение"

Такое оно уже не проглотит.

а на счет циклится.
хм

Что код хромает, и случаи далеко не все рассмотрены - с этим я согласен. Если у тебя есть какие-либо советы или предложения, то, пожалуйста, выкладывай. Я с радостью их вставлю в код.

Ну про зацикливание, надеюсь, понял.

а вообще подобная задача решается не тримами, ансипозами, позами и ленгзами. такая задача довольно просто решается обходом всего текстовика за один раз в цикле. по дороге можно наловить, все, что угодно.
тоесть

ну а если надо совсем чтоб быстро это сделать -- бизон тебе в руки. Там и примеры с ним идут + он генерит plain C

Понадобилось сегодня в учебных целях. Во-первых, как сделать полноэкранную форму в C++ Builder. В инете много мифов, что для этого нужен непременно OpenGL или DirectX, на самом деле достаточно в Инспекторе Объектов поменять 2 свойства формы:

Потом кидаем на форму компонент TImage и ставим ему свойство

Во-вторых, как избежать мерцания при перерисовках. Можно найти массу решений с использованием кучи функций Windows API, но в Билдере обычно хватает следующего:

Третья типовая проблема - как обработать координаты мыши при щелчке по рисунку, ведь в обработчик Image1Click они не передаются? В принципе, это легко сделать:

- но зачем это нужно, если есть Image1MouseDown и Image1MouseUp - нажатие и отпускание кнопки мыши? Давайте рассмотрим простейшую жизненную ситуацию - если клик был "с протягом", то есть, координаты отпускания отличаются от координат нажатия кнопки мыши, то рисуется нечто, например, эллипс, в той области, которую мы "протянули", а если клик был точно на месте или "протяг" оказался слишком маленьким (меньше заданного значения r ), то рисуется эллипс с центром в точке клика (или этого слишком маленького протяга).

Чтобы в С++ Builder работала функция min , нужно подключить к модулю

Из листинга также видно, что выход из приложения будет по нажатию правой кнопки мыши, ну и по Alt+F4 , конечно.

Читайте также: