Форум: "Основная";
Текущий архив: 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.01 c