nesco писал(а):
я бы рекомендовал переименовать компонент, к примеру, в RepeatChar 
code_35425.txt
"Но это уже совсем другая история..."(с) и возможно следующий компонент

Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): я бы рекомендовал переименовать компонент, к примеру, в RepeatChar ![]() code_35425.txt "Но это уже совсем другая история..."(с) и возможно следующий компонент ![]() |
|||
карма: 25 |
| ||
файлы: 1 | code_35425.txt [1KB] [593] |
Разработчик
Ответов: 26268
Рейтинг: 2141
|
|||
Предлагаю прототип Java-функции str_pad -- str_pad.sha
|
|||
карма: 22 |
| ||
файлы: 1 | str_pad.sha [4.2KB] [589] |
Ответов: 8948
Рейтинг: 824
|
|||
nesco, уж до кучи: если строка длинее установленной, по False/True разбить строку на кусочки, а в последний по необходимости добавить
![]() |
|||
карма: 19 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, ну а почему не так ?
code_35430.txt ------------ Дoбавленo в 11.31: Леонид писал(а): разбить строку на кусочки![]() |
|||
карма: 25 |
| ||
файлы: 1 | code_35430.txt [1.6KB] [427] |
Ответов: 4658
Рейтинг: 762
|
|||
карма: 26 |
| ||
файлы: 1 | code_35431.txt [2.3KB] [716] |
Разработчик
Ответов: 26268
Рейтинг: 2141
|
|||
Tad писал(а): ну а почему не так ?Я просто сконвертировал готовый код. Можно и как ты предложил, но мне не хотелось бы использовать SetLength, КМК Copy будет предпочтительней. Подождем, что по этому вопросу скажет Netspirit |
|||
карма: 22 |
|
Ответов: 4658
Рейтинг: 762
|
|||
По поводу? Если работа со строками ведется только с использованием операторов Delphi без сторонних функций, то никаких проблем.
|
|||
карма: 26 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Netspirit писал(а): Что это за любовь к сложению строк в циклах![]() Netspirit, примерчик придумай для -= без цикла. |
|||
карма: 25 |
|
Ответов: 4658
Рейтинг: 762
|
|||
А зачем без цикла? Тот же цикл, только Move() вместо присвоения. Если цикла нет и нужно просто несколько раз соединить строки - нет проблем.
Я имел в виду именно генерацию строки, состоящей из указанного количества одинаковых символов/подстрок. В этом месте: while Length(half)<pad_to_go do half := half + padstring; |
|||
карма: 26 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Netspirit, я тоже про это думал.
А вдруг кто-то захочет зеркало:
![]() |
|||
карма: 25 |
|
Разработчик
Ответов: 26268
Рейтинг: 2141
|
|||
Tad писал(а): Так ему захотелосьЭто не мне захотелось. Так работает стандартная функция str_pad PHP и Java ------------ Дoбавленo в 12.47: Tad писал(а): Я предложил реализовать компонентом SetLength просто процедуру "обрезания" строки(члена) до нужного размераА я предлагаю добавить то, что уже имеется у всех, но не у нас |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, это уже другой компонент.
Когда-то, на заре HiAsm, Amper выкладывал компонент, ЕМНИП, который назывался вроде StringOperations. Правда там "смешались вместе кони, люди", но идея была не так уж и плоха. Нужен такой компонент. Чтобы можно было и SetLength, и StrRepeat, и PadStr и много чего, что редко требуется, но требуется и из-за чего приходится "доставать" IC или лепить схему из нескольких компонент. |
|||
карма: 25 |
|
Ответов: 4658
Рейтинг: 762
|
|||
Tad писал(а): Я предложил реализовать компонентом SetLength просто процедуру "обрезания" строкиТак, давайте выясним задачи, а то тут что-то всё в одну кучу свалили 1) Та, для которой создана эта тема - "обрезание строки". То-есть, получить первые N символов указанной строки. Эту задачу выполняет у нас Copy. Но поскольку часто требуется получить именно первую часть, то я предлагаю для упрощения туда же добавить два метода doCopyFirst, doCopyLast и закончить тему SetLength. Необходимости "увеличения" строки тут нет. 2) Дополнение строки до указанной длины слева, справа, с обеих сторон указанным символом (строкой). Для этого нужен отдельный компонент. Называем его StrPad, методы doPadLeft, doPadRight, doPadBoth, точки/свойства Length, FillChar(FillPattern). Можно ещё добавить свойство что делать, если строка превышает Length: обрезать, выдать неизменённую. Tad писал(а): А вдруг кто-то захочет |
|||
карма: 26 |
|
Разработчик
Ответов: 26268
Рейтинг: 2141
|
|||
Netspirit писал(а): Называем его StrPad, методы doPadLeft, doPadRight, doPadBoth, точки/свойства Length, FillChar(FillPattern)Не надо так делать, надо просто сделать один метод doOperation и установку типа преобразования в свойствах. Я предложил прототип уже готового компонента, достаточно его только засунуть в оболочку ------------ Дoбавленo в 13.09: Netspirit писал(а): у нас есть что-то типа StrReverse?Нету, но можно сделать |
|||
карма: 22 |
|
Ответов: 4658
Рейтинг: 762
|
|||
nesco писал(а): надо просто сделать один метод doOperation![]() ------------ Дoбавленo в 13.13: Tad писал(а): Чтобы можно было ... и StrRepeat |
|||
карма: 26 |
|