![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Гость_Игорь |
|
||||
|
Unregistered |
Хело эврибади!
Мое приложение записывает свои действия в лог файл вот таким способом:
Logger.GetNext - это мой класс (наследованный от TStringList) который просто возвращает следующую строку. Но вопрос не в нем. Собственно меня смущает вот этот код:
Допустимо ли в Делфи складывать строки таким образом??? (Если б я написал такое на Java то меня б сразу уволили.) Порылся в хелпе - нашел тока такую функцию function Concat(s1 [, s2,..., sn]: string): string; Будет ли правильней использовать ее вместо простого сложения? Подскажите какие еще есть правильные методы работы со строками в Делфи. Есть ли для этого спец. функции\классы ? Было б здорово почитать на эту тему какую-нить умную статью. Заранее спасибо. |
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Не вижу здесь ничего приступного.
Так и должно быть. компилятор выполняет сложение в один проход. Delphi сама выполнит оптимизацию по ходу компиляции. Concat в данном случае ничего ни прибавит. [add] Поправочка. Concat не только не добавит. Вот длянул в хелпе:
Так что его присутствие обусловлено только совместимостью с другими версиями. По сути он даже медленнее. Это сообщение отредактировал(а) Snowy - 5.5.2005, 00:04 |
|||
|
||||
| Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
В модуле SysUtils много полезных функций для работы со строками. К стати, в работе со строками можно использовать относительные операторы (=, <>, <, >, <=, >=). А вот тут небольшой faq: FAQ
|
||||
|
|||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Видимо в Java все складывания обрабатываются поочереди.
Сколько складываний строк, столько и операций. Дельфя же заранее распределяет память под строку и все сразу туда спихивает, независимо от количества операций по тексту. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Ясно. Спасибо.
|
|||
|
||||
| Гость_Игорь |
|
|||
|
Unregistered |
Спасибо за FAQ
ЗЫ Насчет сложения строк в Яве - то для этого есть спец. класс StringBuffer Явное же складывание строк ведет к нерациональному расходу памяти, нерациональному же P-коду (строки кстати компилятся в StringBuffer - я проверял) и, как утверждают некоторые гуру, к memory leak При приеме на работу в какую-нить более менее солидную контору при собеседовании первым же вопросом (ну или вторым) является вопрос про сложение строк. Таким образом они думают, что отсеивают лохов. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Теперь понятно. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |