![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Маша сильно болеет туберкулезом.
Антон К. © (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]Кто же будет заниматься любовью с больной туберкулезом?