Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.14;
Скачать: CL | DM;

Вниз

Маша сильно болеет туберкулезом.   Найти похожие ветки 

 
Антон К.   (2002-09-19 20:02) [0]

Вопрос такой.
Есть к примеру строка: Маша сильно болеет туберкулезом.
Нужно из этой строки вытащить все слова и вставить их в listbox этаким списком. Т.е в listbox выглядеть это должно так:

Маша
сильно
болеет
туберкулезом.

Как такое сделать, а? И очень желателен исходник!

Еще вопрос. Почему pos(), реагирует на Регистр и возможно ли это как то изменить. К примеру код

i:=pos("маша","Маша сильно болеет туберкулезом.") не найдет ничего, т.е i будет равно 0, а вот
i:=pos("Маша","Маша сильно болеет туберкулезом.") укажит цифру 1, т.е в принципе найдет искомое слово Маша. Видимо это функция запрограмированна на учет регистра, тогда как же узнать, что определенное слово есть в строке без учета регистра? Какая есть альтернатива Pos?


 
MBo ©   (2002-09-19 20:12) [1]

Переводи обе строки в один регистр, например, AnsiUpperCase, и тогда ищи.
А разделить на слова в твоем случае (разделение по пробелам и запятым)
ListBox1.Items.Commatext:=твоя строка


 
Антон К.   (2002-09-19 20:41) [2]

Спасибо! Разобрался!


 
Кот Бегемот ©   (2002-09-19 20:54) [3]

А менее безобидную фразу нельзя было придумать ?
Например
"Маша любит заниматься любовью с Антоном"


 
Антон К.   (2002-09-19 21:01) [4]

Кто же будет заниматься любовью с больной туберкулезом?


 
X-Vizitor   (2002-09-19 23:24) [5]

;p


 
vidiv   (2002-09-20 08:06) [6]

1:
str:="Маша сильно болеет туберкулезом.";
while pos(" "{<<2 пробела},str)<>0 do delete(str,pos(" ",str),1); // Удаляем лишние пробелы.
while pos(" "{<<1 пробел},str)<>0 do
begin
ListBox1.Items.Add(copy(str,1,pos(" ",str)-1));
Delete(Str,1,Pos(" ",str));
end;
//////////Вроде все!!!

2:
На счет регистра:

Function NRPos(SubStr,Str:String):Integer;
Begin
Result:=Pos(UpperCase(SubStr),UpperCase(Str));
End;

Все теперь только вместо Pos используй NRPos и все будет без учета регистра!!!


 
Esu ©   (2002-09-20 09:00) [7]

Сегодня уже давали ссылку про КА, как раз такой пример рассмотрен, а ListBox1.Items.Commatext лучше пока не использовать IMHO.
http://www.kalinin.ru/programming/alg/21_08_00.shtml


 
Рыжик ©   (2002-09-20 09:21) [8]

А TStrings сам умеет разделять строку на слова:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Delimiter:=" ";
ListBox1.Items.DelimitedText:="Антон не хочет заниматься люьовью с больной туберкулёзом Машей";
end;

Всё просто :)


 
Zemal ©   (2002-09-20 10:32) [9]

Рыжик >> Ты единственный, кто без гемора объяснил и профессионально, с использованием всей мощи накопленного программистами опыта :). Молодец! Остальные программисты не объектные, а процедурные. Поясню: если надо будет перевести строки символов из кодировки 866 в 1251, то ты наверняка найдёшь нужную функцию (CharToOEM, OEMToChar) уже давно написанную и проверенную, а остальные будут изобретать велосипед (искать коды символов и делать глупую работу по сдвигу номера символа, если он попадает в какой-то диапозон). С таким я уже не раз сталкиваюсь :). Программистом надо быть в первую очередь образом мышления, но некоторые только создают видимость программистов. Рыжик, ты программист по образу мышления! :) Молодец! Учитесь все использовать классы и методы Делфи у Рыжика! :) Всё-таки Делфи объектно ориентированная среда разработки, так что перестраивайтесь на новый лад процедурные программисты!!! И нечего велосипеды изобретать и изощряться в том, кто умнее глупость придумает! :)


 
RedWood   (2002-09-20 10:53) [10]

Ура! Ура! Ура!
Наконецто появился хоть кто-то,
кто смог оценить Рыжика по его, несомненно, великим заслугам :))
Слава! Слава! Слава!


 
Zemal ©   (2002-09-20 10:57) [11]

Рыжик >> Ты единственный, кто без гемора объяснил и профессионально, с использованием всей мощи накопленного программистами опыта :). Молодец! Остальные программисты не объектные, а процедурные. Поясню: если надо будет перевести строки символов из кодировки 866 в 1251, то ты наверняка найдёшь нужную функцию (CharToOEM, OEMToChar) уже давно написанную и проверенную, а остальные будут изобретать велосипед (искать коды символов и делать глупую работу по сдвигу номера символа, если он попадает в какой-то диапозон). С таким я уже не раз сталкиваюсь :). Программистом надо быть в первую очередь образом мышления, но некоторые только создают видимость программистов. Рыжик, ты программист по образу мышления! :) Молодец! Учитесь все использовать классы и методы Делфи у Рыжика! :) Всё-таки Делфи объектно ориентированная среда разработки, так что перестраивайтесь на новый лад процедурные программисты!!! И нечего велосипеды изобретать и изощряться в том, кто умнее глупость придумает! :)


 
Alx2 ©   (2002-09-20 11:27) [12]

>Zemal © (20.09.02 10:57)
>И нечего велосипеды изобретать и изощряться в том, кто умнее
>глупость придумает!

Извини, пожалуйста. Я постараюсь больше не придумывать глупостей. Я даже представить не могу насколько тебе, большому и умному, трудно сдреживаться при чтении некоторых веток форума. Но, чтобы тебе было не так противно, я попытаюсь достичь твоего уровня профессионализма и запомнить, что Delphi - "объектно ориентированная среда разработки". А пока... мы же только пока учимся, Zemal. Потерпи, пожалуйста.


 
Anatoly Podgoretsky ©   (2002-09-20 11:30) [13]

Zemal © (20.09.02 10:57)
OEMToChar не для преобразования 866 в 1251, а для преобразования OEM to ANSI


 
RV ©   (2002-09-20 11:38) [14]

Zemal

Рыжик, действительно, молодец
но это, к счастью, ОНА :)


 
Zemal ©   (2002-09-20 11:55) [15]

Рыжик >> Ты единственный, кто без гемора объяснил и профессионально, с использованием всей мощи накопленного программистами опыта :). Молодец! Остальные программисты не объектные, а процедурные. Поясню: если надо будет перевести строки символов из кодировки 866 в 1251, то ты наверняка найдёшь нужную функцию (CharToOEM, OEMToChar) уже давно написанную и проверенную, а остальные будут изобретать велосипед (искать коды символов и делать глупую работу по сдвигу номера символа, если он попадает в какой-то диапозон). С таким я уже не раз сталкиваюсь :). Программистом надо быть в первую очередь образом мышления, но некоторые только создают видимость программистов. Рыжик, ты программист по образу мышления! :) Молодец! Учитесь все использовать классы и методы Делфи у Рыжика! :) Всё-таки Делфи объектно ориентированная среда разработки, так что перестраивайтесь на новый лад процедурные программисты!!! И нечего велосипеды изобретать и изощряться в том, кто умнее глупость придумает! :)


 
RV ©   (2002-09-20 12:00) [16]

Zemal © (20.09.02 11:55
Баден-Баден?


 
Anatoly Podgoretsky ©   (2002-09-20 12:01) [17]

Спаммер какой то :-)


 
Кот Бегемот ©   (2002-09-20 12:06) [18]

Удалено модератором


 
Zemal ©   (2002-09-20 12:06) [19]

Извините за повторы месаги, у нас прокся глючит видимо :(.

Anatoly Podgoretsky >>
Ты прав, действительно я не правильно сократил. Исправляюсь:
OEMToChar конвертирует номера символов в строке из таблицы OEM в ANSI. Запутался немного с кодировками, да и просто неправильно выразился :).


 
Anatoly Podgoretsky ©   (2002-09-20 12:10) [20]

Во теперь правильно, а то я много встречал таких, которые искренне считали что 866-1251 и потом удилялись почему программа не работает на других компьютерах.


 
Zemal ©   (2002-09-20 12:24) [21]

Кот Бегемот >>
Ладно, не дуйся. Я просто зол был с утра. Приходится разбираться в исходниках другого программиста, который тут до меня наворочал... мля... этот придурок строку символов конвертил из OEM в ANSI... написал процедуру на лист А4. Да и другие фишки от которых слёзы на глаза наворачиваются. Кстати, закончил ВУЗ по программированию. Смотрю иногда в форумы и такой же геморой вижу в основном. Кстати, класс TStringList и его методы прекрасно описаны чуть ли не в каждой второй книге по Делфи, просто некоторым лень читать и они лезут в форумы и несут всякую чушь, но чушь грамотную с точки зрения Паскаля (процедурного программирования). Так вот... иногда хочется сказать людям: ЧИТАЙТЕ КНИГИ И ХЭЛПЫ ВАШУ МАТЬ!!! ПРЕЖДЕ ЧЕМ ЧТО-ТО ДЕЛАТЬ - ПОДУМАЙ, НЕ СДЕЛАНО ЛИ ЭТО ДО ТЕБЯ, А ЕСЛИ СДЕЛАНО, ТО ЗАЧЕМ ТРАТИТЬ СИЛЫ САМОМУ И НАПРАВЛЯТЬ ДРУГИХ ПО ЛОЖНОМУ ПУТИ???!!!
Вот-с... Спасибо большое Рыжику, за то что она в пример другим, читает много, а не изобретает велосипеды, самокаты и т.д. :)


 
Alx2 ©   (2002-09-20 12:31) [22]

>ЧИТАЙТЕ КНИГИ И ХЭЛПЫ ВАШУ МАТЬ!!!

Ты не в одиночестве. В разделе "потрепаться" довольно регулярно всплывают такие темы. Так что кричать уже пробовали. Результат виден.


 
Vdovin-AV@yandex.ru   (2002-09-20 12:39) [23]

Рыжик твой пример хорош, но ты забыл
указать версию Delphi в котором он будет работать...
Эти Property и метод появились только в Delphi 6.
Выложу в кладовку модуль strTools.pas в нем
см. функции Token и NumToken.


 
Кот Бегемот ©   (2002-09-20 12:39) [24]

Урааа :)
Меня первый раз удалилиии :)))

Zemal © (20.09.02 12:24)
Так ты модер ???
Да я и не дуюсь :) - даже наоборот
А еще бывает такое, что ПРИ НЕХВАТКЕ БАЗОВЫХ ЗНАНИЙ проще придумать свое чем тратить время на поиски
Классический присмер TStringList



 
Zemal ©   (2002-09-20 13:17) [25]

Vdovin-AV@yandex.ru >> Ты не прав! В Делфи 5 уже были все методы класса TStringList реализованы! И все работали в 5 делфе! Вот-с...

Кот Бегемот >> Классический пример с классом TStringList... так это самые азы!!! Если уж азы забыть, т.е. базовые знания, то лучше больше за Делфи и не браться... Такие вещи каждый начинающий программист должен знать на зубок. Можно забыть что-то из RX или другие сторонние разработки, но ведь TStringList это СТАНДАРТ!!! А потраченное время на поиски возвращается сторицей, один раз нашол и запомнил надолго. Всё что ты нашол - откладывается у тебя в голове и библиотеке твоих исходников. А если тебе проще придумать, чем найти верное решение, то ты остановился в развитии, ибо ничего уже не ищешь и следовательно ничему новому, в принципе, не научишься. Вот так можно остановиться в развитии, как в общем-то многие и сделали. А остановиться в развитии - значит отстать от новых технологий... ладно, не буду дальше продолжать и так всё понятно.
Мысль программиста не должна быть узкой и оперировать только известными методами, она должна предпологать, искать, подниматься на самые высокие уровни и опускаться до самых низов, с лёгкостью оперировать не до конца известными параметрами, или вообще совершенно неизвестными, искать ниточки за которые можно уцепиться и раскрутить весь клубок, абстрагироваться от сложного к простому и наоборот... и главное - не пугаться неизвестного и не бежать от него в панике, уметь двигаться к цели правильным а не самым лёгким путём... только тогда программист достигает мастерства, а не ползает по своей делянке, которую знает как свои пять пальцев.
Вот моё мнение о том, какое мышление должно быть у программиста для достижения успеха в наше нелёгкое время, наполненное океаном новых технологий, один вид которых некоторых пугает, а некоторых только подстёгивает. Вы можете высказаться против здесь, в форуме, но в глубине души будете понимать, что я прав. Удачи всем.


 
Vdovin-AV@yandex.ru   (2002-09-20 13:35) [26]

Незнаю, незнаю...
TStrings.Delimiter и TStrings.DelimitedText в Delphi 5
не существует.
Classes.pas выслать ?
Запусти Delphi 5 и да поможет тебе F1. А уже потом можно философствовать.......


 
pasha_golub ©   (2002-09-20 13:37) [27]


> Zemal

Не НАШОЛ! А НАШЕЛ! Базовые знания языка тоже нужно знать!!!


 
AndreyAdm   (2002-09-20 13:37) [28]

пиши на мыло. есть исходник, работает на "ура".
Разбтвает строку на слова и обратно


 
Андрей Прокофьев ©   (2002-09-20 13:39) [29]

2 pasha_golub © (20.09.02 13:37)
>> Базовые знания языка тоже нужно знать!!!

:)))


 
Behemoth ©   (2002-09-20 13:47) [30]

to Zemal: да ты философ?!!!


 
Zemal ©   (2002-09-20 14:10) [31]

Ну правописание у меня храмает :(. Признаюсь. Но не надо путать зелёное с кислым, эти понятия находятся в разных плоскостях. А с правописанием у меня со школы... привили, понимаете ли ненависть к Рус.яз и Лит-ре...
На счёт Делфи 5 и TStringList могу сказать только одно - я делал и у меня работало. Кстати, может проблема в том, что ты сервпаки не установил для 5 Делфи. Утверждать не буду, но похоже в сервпаках дополнения к классам и вышли. Я сам пользуюсь 6 Делфи уже давно, но у меня есть книга Архангельского "Делфи 5" в которой класс TStringList и все его методы описаны в подробностях... может автор и опередил время, но... я точно помню, что использовал DelimitedText... но видимо у меня оба сервпака были установлены (я за этим слежу, люблю обновления больше чем релизы) :).


 
Vdovin-AV@yandex.ru   (2002-09-20 14:29) [32]

Для Zemal:
Один сервопак я ставил и у меня этих методов нет,
но где взять второй для пятерки может подскажешь...


 
Separator ©   (2002-09-20 14:31) [33]

В магазинах, на базарах


 
Zemal ©   (2002-09-20 14:40) [34]

Могу выслать. Он однако большой. 28 мегов.


 
Zemal ©   (2002-09-20 14:54) [35]

Вообще зачем он нужен? Установи лучше Делфи 6 и два сервпака... конечно если машина позволяет (говорят слабенькие процы плохо справляются). В Делфи 6, конечно, тоже не всё гладко... например вчера такую багу нашол: оказывается событие Application.OnMinimize срабатывает только один раз, а потом что-то происходит и приложение вообще не реагирует на кнопку минимизации(в заголовке окна), но на Application.Minimize из програмного кода реагирует нормально и сворачивается. Вот такая вот бага. Попробую в Support достучаться и сообщить. :) Почему так происходит совершенно непонятно. В Делфи 5 такого небыло.


 
Vdovin-AV@yandex.ru   (2002-09-20 14:54) [36]

если это D5EntUpdate.exe то это у меня есть и уже установлено.


 
Zemal ©   (2002-09-20 15:00) [37]

Ой... действительно у меня первый сервпак... второй дома... удивляюсь как этот тут ещё завалялся :)... щас я его грохну :). Сходи на сайт Борланда и посмотри, там должен быть, там полно всякого :).


 
pasha_golub ©   (2002-09-20 15:36) [38]


> Zemal

Согласен, основы надо знать. Но для одной строки классы создавать - это, извините, слишком. Ко всему прочему основы то как раз и кроются в старом процедурном методе, без него трудно будет что-то строить, ибо он есть очень крепкий фундамент.
За грамматику не сердись, уж больно ты категорично все заявлял, а я категоричности не люблю. :-))


 
KSergey ©   (2002-09-20 15:41) [39]

>Zemal © (20.09.02 14:40)

2-й сервис пак для D5?!!!!! А борланд о нем в курсе?!
Есть подозрение, что вам все же стоит отойти от философствования и посмотреть на мир вокруг... ;)
Если же он у вас есть - можно уточнить где вы его взяли?


 
qube ©   (2002-09-20 15:49) [40]

2 Zemal
"Если тебе проще придумать свое, чем найти готовое, то ты остановился в развитии" -- это ты, старина, загнул :)). Свое придумывать необходимо (!) для развития, хотя велосипеды изобретать не стоит. Ты посмотри на половину вопросов этого форума: а есть ли компонент, чтобы 2+2 сложить? Уж лучше остановиться в развитии, по-моему...



Страницы: 1 2 вся ветка

Текущий архив: 2002.10.14;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.022 c
14-45591
DeMoN-777
2002-09-21 09:35
2002.10.14
ATX или AT


1-45368
Jackson
2002-10-04 22:50
2002.10.14
Текст


3-45205
Андрусь
2002-09-19 16:56
2002.10.14
Помогите разобраться с фильтром на Odac


1-45345
raiks
2002-10-05 17:29
2002.10.14
Как при компиляции изменить свойство компонента?


1-45448
Extr
2002-10-03 18:18
2002.10.14
TCombobox