Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

кол-во подстрок в строке [D7]


Страницы:   1 2 3 4

Неважно ©   (2009-11-27 17:39:00) 

ДД.
Есть строка 01hello word01

Необходимо посчитать сколько "подстрок" 01 было в строке.
Есть что-нибудь из 1 команды или только циклом с PosEx ?

Спасибо


Юрий Зотов   (2009-11-28 22:23:00) [41]

> Ухарь   (28.11.09 21:21) [20]

> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла.

Где бы переменная ни объявлялась, ее объявление все равно присутствует, и поэтому громоздкость кода одинакова. И гораздо удобнее, когда все объявления сосредоточены в одном месте, а не разбросаны по коду.

А уж если рассматривать циклы, то более громозким скорее окажется код на C или Java (где каждый цикл объявляет свой счетчик, тогда как в Delphi он может быть общим для нескольких циклов).  

> И в том, что я обязан описывать ее тип, хотя во многих случаях
> компилятор мог бы сам это понять.

Похоже, Вам просто не приходилось писать (и, главное, отлаживать) программы на языках, в которых существуют дефолтные объявления переменных. Иначе отсутствие таких объявлений Вы бы назвали не недостатком, а очень большим достоинством. Как и строгую типизированность.

> И в многочисленых begin end;

Чем оно хуже столь же многочисленных {} - совершенно непонятно. Блок есть блок на любом языке - и на любом языке его начало и конец должны быть как-то обозначены. В этом смысле begin-end даже лучше, чем {} - потому что заметнее и поэтому делают код более читабельным.

====================

К вопросу о громоздкости - просто убивает огромное количество лишних скобок в java. Читабельность кода резко снижается. Например:

1. Вызов функции без параметров. Компилятор и так знает, что вызывается функция, и что она без параметров - так на фига же ему еще () нужны?

2. if (логическое_выражение) оператор;
На фига логическое выражение заключать в скобки? Синтаксис и без них однозначен.

3. try {...} catch {...} finally {...};
Во всех секциях {} - лишние. Синтаксис однозначен и без них.

и т.п.

======================

Моя любимая фича из серии "на фига нам такая краткость?".

public int sum(int x, int y) {
 return x + y;
}

public int func() {
 int i = 1;
 return func(i, i++);
}

Вопрос - что вернет func?

Как только на него ответите, так тут же и поймете, что сокращения типа ++ или -- более вредны, нежели полезны. Гораздо лучше написать "громоздкое" i := i + 1, но с абсолютно предсказуемым результатом.


_   (2009-11-28 22:08:00) [42]


> Не занят   (28.11.09 20:55) [19]


На АСМе же пишут и ни чО. ;)


DVM   (2009-11-28 21:35:00) [43]


> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять.

И слава богу, что это так. Меньше шансов допустить ошибку.


> И в многочисленых begin end;

Ну { и } разве что покороче, но их количество не меньше.


@!!ex   (2009-11-28 21:32:00) [44]

> [20] Ухарь   (28.11.09 21:21)
> Громоздкость например в том, что я не могу объявить переменную
> прямо по месту - например внутри цикла. И в том, что я обязан
> описывать ее тип, хотя во многих случаях компилятор мог
> бы сам это понять. И в многочисленых begin end;

Это дело вкуса.
По мне так почти все перечисленное - скорее минусы.
Пожалуй соглашусь только с тем, что объявление инкремента внутри цикла был бы удобнее.


Ухарь   (2009-11-28 21:21:00) [45]


> DVM ©   (28.11.09 15:52) [17]


> Юрий Зотов ©   (28.11.09 18:56) [18]


Громоздкость например в том, что я не могу объявить переменную прямо по месту - например внутри цикла. И в том, что я обязан описывать ее тип, хотя во многих случаях компилятор мог бы сам это понять. И в многочисленых begin end;


> Не занят   (28.11.09 20:55) [19]
>
>
> > _   (28.11.09 13:23) [15]
> >
> >
> > > В реальной программе такого никогда не написал бы.
> >
> >
> > Почему?
>
>
> Any fool can write code that a computer can understand.
> Good programmers write code that humans can understand.
> Martin Fowler


Дело не в этом.
Пример понятен, но он работает неоптимально. Это по сути трюк


Не занят   (2009-11-28 20:55:00) [46]


> _   (28.11.09 13:23) [15]
>
>
> > В реальной программе такого никогда не написал бы.
>
>
> Почему?


Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler


Юрий Зотов   (2009-11-28 18:56:00) [47]

> Ухарь   (28.11.09 15:04) [16]

> Я про громоздкость синтаксиса  паскале, если что.
> В частности, синтаксиса циклов

А в чем же громоздкость-то?


DVM   (2009-11-28 15:52:00) [48]


> Ухарь   (28.11.09 15:04) [16]

Ну ты не обобщая, более "громозок" чем например в си только цикл for
Но в чем громоздкость

while () do

или

repeat
until ()


Ухарь   (2009-11-28 15:04:00) [49]


> korneley ©   (28.11.09 12:34) [14]


Я про громоздкость синтаксиса  паскале, если что.
В частности, синтаксиса циклов


_   (2009-11-28 13:23:00) [50]


> В реальной программе такого никогда не написал бы.


Почему?


korneley   (2009-11-28 12:34:00) [51]


> Ухарь   (28.11.09 11:39) [13]
> Все  уже давно придумано, и если бы Вы интересовались темой,
> были бы в курсе.

Как это напоминает "Всё уже украдено до нас" :) И тема разобрана по частям ещё в прошлом веке. Дональд Кнут. "Искусство программирования." Том третий.


Ухарь   (2009-11-28 11:39:00) [52]


> korneley ©   (28.11.09 02:54) [11]
>
>
> > Ухарь   (27.11.09 23:23) [10]
> > Недостаток языка это :-(когда такие вещи сложно сделать
> > в одну строчку
>
> Не вопрос. Надо просто придумать язык (и создать для него
> IDE), в котором будет оператор СколькоПодстрокВСтроке()
> Причём кол-во параметров варьируется. Займитесь на досуге.
>  Ухарь.
>


Все уже давно придумано, и если бы Вы интересовались темой, были бы в курсе.


korneley   (2009-11-28 03:00:00) [53]


> Sha ©   (27.11.09 21:52) [4]

:))) Сильно и стильно. Но [7] - правильно.


korneley   (2009-11-28 02:54:00) [54]


> Ухарь   (27.11.09 23:23) [10]
> Недостаток языка это :-(когда такие вещи сложно сделать
> в одну строчку

Не вопрос. Надо просто придумать язык (и создать для него IDE), в котором будет оператор СколькоПодстрокВСтроке()Причём кол-во параметров варьируется. Займитесь на досуге. Ухарь.


Ухарь   (2009-11-27 23:23:00) [55]

Недостаток языка это :-(
когда такие вещи сложно сделать в одну строчку


Игорь Шевченко   (2009-11-27 23:00:00) [56]


> Да, но трюкачество все это.


И трюкачество на что-нибудь полезно - если есть лимит по размеру кода, например, или еще какие лимиты.


DVM   (2009-11-27 22:09:00) [57]


>  Edit3.Text:=IntToStr(Length(StringReplace(Edit1.Text,Edit2.
> Text,Edit2.Text+#0,[rfReplaceAll]))-Length(Edit1.Text));
>

Хитро, но я несколько минут смотрел на это силясь понять что оно делает. :)


Sha   (2009-11-27 22:04:00) [58]

> Игорь Шевченко
> Хитро :)

Да, но трюкачество все это.
В реальной программе такого никогда не написал бы.


Sha   (2009-11-27 21:57:00) [59]

Блин, забыл ник поменять, хотел запостить под ником "Ненужно".


Игорь Шевченко   (2009-11-27 21:56:00) [60]

Sha ©   (27.11.09 21:52) [4]

Хитро :)
Моей первой мыслью было, что ты убираешь подстроки и вычисляешь, насколько изменилась длина. Тут же смутило отсутствие деления. Пригляделся - совершенно иначе. Хитро, спасибо за науку.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо