Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
Антон К.   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.009 c
14-45585
MJH
2002-09-20 19:19
2002.10.14
Новый скин к Найтро нарисовал


1-45420
oleg_er
2002-10-02 15:11
2002.10.14
EXCEL - не хочет вставлять строки


6-45492
BlackSun
2002-08-12 12:57
2002.10.14
Отправка данных из ServerSocket


14-45560
программист_ищу_работу
2002-09-06 12:07
2002.10.14
ищу документацию на winsock


4-45630
Карелин Артем
2002-08-30 18:03
2002.10.14
Русский язык в win2000 server





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский