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

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

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


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

Антон К. ©   (2002-09-19 20:02:00) 

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

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

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

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

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


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

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


Alx2   (2002-09-20 12:31:00) [42]

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

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


Zemal   (2002-09-20 12:24:00) [43]

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


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

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


Zemal   (2002-09-20 12:06:00) [45]

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

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


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

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


Anatoly Podgoretsky   (2002-09-20 12:01:00) [47]

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


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

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


Zemal   (2002-09-20 11:55:00) [49]

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


RV   (2002-09-20 11:38:00) [50]

Zemal

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


Anatoly Podgoretsky   (2002-09-20 11:30:00) [51]

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


Alx2   (2002-09-20 11:27:00) [52]

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

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


Zemal   (2002-09-20 10:57:00) [53]

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


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

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


Zemal   (2002-09-20 10:32:00) [55]

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


Рыжик   (2002-09-20 09:21:00) [56]

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

Всё просто :)


Esu   (2002-09-20 09:00:00) [57]

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


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

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 и все будет без учета регистра!!!


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

;p


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

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


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

Наверх

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