Как стать автором
Обновить

Комментарии 25

Хехе. Этой теме с граблями в Richedit уже лет 20. Я, когда делал My Notes Center (.com), наступил на них на все. Даже как-то пообщался с разработчиком riched20.dll из Microsoft по некоторым вопросам.

Мой совет — не использовать Richedit для редактирования plain text. Лучше SynEdit или что-то подобное, в исходниках. Вам ведь и подсветка синтаксиса понадобится и автодополнения и прочие подсказки. Заодно лучше поймете внутренности компонентов для работы с текстом.
Ну, по крайней мере, граблей с адресацией как оказывается нет. Все достаточно просто :-)

Сделать простую подсветку синтаксиса это тоже не сложно, по крайней мере для этого мне точно не понадобиться сторонний компонент…

Вот если SynEdit умеет еще и регулярными выражениями работать при подсветке и может проверять написанное при помощи этих выражений — тогда это интересно !
Тихо, удалите пост, пока Дельфи Хейтеры не прибежали )).
а это кто такие ?!
Это те кто прячется в Тени, С клинками в рукавах, они воют с сообществом Тамплиеров (Dummies'ov)
Защищая честь и грамотность святого хабра ))
Аааа, ну тут таких много…
я сужу по оценкам за статьи — минусовать минусуют — но хоть бы один написал за что :-)
Так что на таких проще просто не обращать внимание, давно известно что больше всего минусуют те кто сами больше одной-двух статей не написали...
Переделанный анекдот про бомжей и книжку по ТурбоПаскаль из помойки:
-Глянь, Петрович, неужели на Дельфях еще кто-то пишет?!
миллиарды мух не могут ошибаться? :-)

p.s. вообще не понимаю чем Дельфи не угодил..

Если задача решается — то разве важно какой язык? — как там в другом анекдоте: Вам шашечки или ехать?

10-й по популярности язык если что.
Почему Дельфи (который вроде как уже и не Дельфи), а не православный Лазарус? И не надо так кричать восклицательными знаками в тексте и напирать на то, что нам что-то надо запомнить и никогда, никогда больше не забывать. Подобные "туториалы" читаются наискосок и должны быть где-то на переферии, что бы что-то щёлкнуло, когда будет подобная проблема, а не стоять перед глазами день и ночь. А учитывая, что существуют ещё кодировки Unicode16,32, то вообще, ценность таких открытий стремится к нулю, как правильно заметили в комментариях, используйте более современные подходы.
Вот вы на Лазарусе пробовали что-то сложнее блокнотика написать? Я всё понимаю, правоверный OpenSource, понимаю, уважаю и кланяюсь в ноги, но блин, не попадает он, когда речь заходит о действительно серьёзном ПО на 100К+ строк кода с поддержкой современных АПИ современных ОСей. А на ваш вопрос "а как же Линух?" отвечу: в этом году, судя по RoadMap, во всяком случае Linux server.
Не знаю как под Линукс, а под Виндовс всё прекрасно работает, про 100К строк вообще молчу, насколько я понимаю у вас проблемы с компонентами а не с количеством кода ибо FreePascal уже очень древний продукт, и если не затрагивать производительность, то вылизан уже очень хорошо.
Ну а минус, я так понимаю, вы влепили, потому что статьи для начинающих должны быть на действительно серьёзном ПО на 100К+ строк кода и в RAD Studio 10 Seattle за 150 тысяч деревянных (мы ведь о Дельфи — коммерческом продукте)?
Сразу скажу, минусов я тут никому не ставил. Не имею привычку кого-то наказывать за то, что их точка зрения не совпадает с моей. Минусую только полных неадекватов. Это так, к слову.

Насчёт Лазаруса: Да, я именно про среду. На чистом языке сейчас далеко не уедешь. Если уж на то пошло, то больше свобод в плане языка таки даёт С++, что бы кто не говорил. Но уровень удобства среды, наличие базовых и сторонних компонентов и инструментов сейчас решает многое.
А что вы подразумеваете под поддержкой АПИ, вам что-то мешает использовать интерфейс предоставляемой системой, компилятор палки в колёса вставляет? Насколько я помню, даже обычный Паскаль и Асм прекрасно ладят с любым АПИ, ведь он как бы и называется Прикладным, а не встроенным..
То что любой открытый АПИ можно использовать почти из любого языка — это ясно. Вопрос в другом — какая идёт обёртка. Писать программу на чистом WinAPI, у которого у каждой функции по два десятка параметров, основная часть из которых или не указываются или равны нулю — это ад кромешный. Есть конечно мазохисты, но если не стоит задача уложиться в 4К, то предпочитаю использовать обёртки. Тем более что есть ещё WinRT, есть OS X, есть мобильные ОСи. И то что я могу сделать кроссплатформенную программу с единой кодовой базой — это для меня огромный плюс. Да, есть всякие QT с неудобоваримым для меня синтаксисом. Есть Java и Python, у которых после каждого обновления что-то ломается. Я предпочитаю хорошо знать один инструмент, который решает все мои задачи, чем под каждую задачу искать и поверхностно изучать свой.
Всё верно, но безотносительно Дельфи, на мой взгляд, у Лазаруса, как раз, с кроссплатформенностью гораздо лучше чем у Дельфи, хотя Embracadero сделал огромный шаг в этом направлении, Kylix когда-то был явно мёртворождённым. Ну и потом, визуальное программирование вообще не подразумевает внешние АПИ, оно подразумевает компоненты. которые накидали на форму и — готово, а сами компоненты могут очень сильно отличаться по реализации на разных платформах ООП опять же.
Ну а для больших проектов, на мой взгляд, компоненты не выход, всё равно всё приходиться допиливать только тут, как уже было замечено не Дельфи VS Лазарус, а что-то более заслуженное в кроссплатформенности.
Да, Kylix был хорошей идеей, но тогда индустрии не нужен был линукс, вот проект и загнулся. Когда появилась первая альфа Лазаруса, я прыгал на диване как ребёнок, потом вторая, потом третья… и как-то энтузиазм сдулся. Годы идут, а воз и ныне там. Среда есть, она таки работает, и даже компоненты есть, и даже некоторые коммерческие подтягиваются. Но всё равно пока не совсем то, чего требует индустрия. Хотя многие простые утилитки вполне нормально в Лазарусе собираются с небольшими правками. Но, блин, к хорошему привыкаешь и возвращаться на 10 лет назад только ради сборки под линукс как-то не тянет.

А насчёт "визуальное программирование вообще не подразумевает внешние АПИ, оно подразумевает компоненты. которые накидали на форму". Да, внешние АПИ завёрнуты в эти компоненты, или иногда в невизульные объекты. Но тут есть тонкая грань. В любом более/менее сложном проекте приходится разрабатывать много своих компонентов или дорабатывать чужие. Очень помогает наличие исходников этих самых "чужих". У меня своя родная библиотека компонентов тянется ещё со 2-й дельфи, а это на минуточку 1997-й год (если память мне не изменяет). Преемственность версий очень радует. Было только два тотальных ремастеринга: повсеместный переход на юникод и появление кроссплатформенности. Но и там и там всё решилось просто заменой некоторых типов и названий некоторых юнитов.

Что сейчас радует — это новые языковые конструкции и изменённая компонентная модель. Тот же FireMonkey. Если раньше для изменения какого-то крупного компонента мне приходилось делать наследника от его предка и много чего переписывать (не всегда можно добиться нужного, наследуя от конечного компонента), то теперь достаточно написать какой-нибудь маленький хэлпер и запихнуть в него весь нужный тебе функционал. Можно поменять поведение сложного многоуровневого визуального компонента, прицепив к нему маленькую надстроечку, которая глубоко в него закопается и сделает всё что нужно именно в том, месте, где нужно. И всё это без хаков, стандартными средствами.

В общем традиционно у меня только две претензии: высокая цена и сыроватость ранних версий. Но обе они решаемы, если задачи того требуют. Ну а если не требуют, то о чём тогда вообще разговор? Есть куча хороших сред и языков на любой вкус и цвет.
Сейчас попиливаю опенсорсный проектик, который забросил автор в Lazarus — могу сказать что, к сожалению удобство работы в Лазарусе намного меньше чем в Дельфи.
Одно только отсутствие однооконного режима чего стоит. Кроме того вынужденная переборка IDE при изменении кода компонентов — это очень неудобно.
С другой стороны есть и явные преимущества, такие как: привязки в LCL — после них VCL переодически вызывает печаль, подсветка условно компилируемых частей кода, сохранение состояния IDE после перезапуска.
AnchorDockingDsng вам в помощь. У меня к Lazarus-у только одна претензия, к дебагеру. Уж очень тяжко без function call и нормальной evaluation выражений.
Матерьял по Richedit наверное будет полезен другим людям, но, лучше переходите на любой другой компонент с подсветкой синтаксиса, намучаетесь вы с Richedit...
вообще то сверху есть значек что это обучающий материал..

если вам это так просто — то могу порадоваться за вас, я например однозначного ответа найти в интернете не смог… а вот вопросов аналогично моему много...

наверное на харбре действительно нужно писать только переводные статьи о космосе… все остальное здесь вызывает только минуса от "супер умных" гуру… — одного не пойму — если тема не интересно зачем заходить и читать ?!!!

не знаю что такое лазарус, у меня среда пишет что она дельфи… хотя вам это ведь не важно, так ведь? :-)))
И никто не обратил внимания, что определение позиции работает за O(N), а соответственно та же подсветка, к примеру будет за O(N^2)
Всем кто сталкивался в необходимостью сделать подсветку синтаксиса просто понятно что лучше выбрать тот же SynEdit, и даже не рассматривать RichEdit для этого кейса
Дельфи… вы бы знали, сколько всего в мировых финансах реализовано на бесконечных Excel и макросах на VBA...
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории