Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2007, 12:07   #1
huck_mid
 
Регистрация: 08.06.2007
Сообщений: 6
По умолчанию Опять строки

Есть строка слов (одна строка), эта строка вводится в memo, так вот, нужно исключить из этой строки слова в которых одновременно присутствуют символы русского и латинского алфавита. Заранее спасибо.
huck_mid вне форума Ответить с цитированием
Старый 14.06.2007, 12:12   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

создаешь два массива букв.
Идешь по строке, разделяя её на слова по разделителям
потом проверяешь и все.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 14.06.2007, 12:12   #3
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Подсказка:
Рус-алф: 192-255 (если для ДОСа, то 128-175), где a: Char
Лат-алф: 65-90 + 97-122, это ord(a), где a: Char

З.Ы. Для всего остального у тебя есть, надеюсь прямые, руки! =)
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 14.06.2007, 13:08   #4
huck_mid
 
Регистрация: 08.06.2007
Сообщений: 6
По умолчанию

Зачем так глубоко копать ведь можно как нить
str:=memo1.text.
ch:=length(str);
i:=0;
while i<=ch do begin
if str[i]=' ' then begin
for j:=0 to i-1 do begin
if str[j] in ['A'..'Z','a'..'z'] then flag:=true;
if flag then begin
if str[j-1] in ['А'..'Я','а'..'я'] then {если это лабуда не смейтесь}
Ну вот в таком напрвлении, ведь наверняка можно? У меня не получается до конца реализовать это. Выручайте.
huck_mid вне форума Ответить с цитированием
Старый 14.06.2007, 13:14   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от huck_mid Посмотреть сообщение
for j:=0 to i-1 do begin
Ввести неще одну переменную K, и j брать не от нуль, а от К

for j:=K to i-1 do begin
..{проверяешь условие}
{и вот оно}
Delete(str,k,i-1);{удаление}
Alex21 вне форума Ответить с цитированием
Старый 14.06.2007, 17:43   #6
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Кстати, выделять отдельные слова можно и другим способом (особенно если слов предполагается много и потом их нужно обрабатывать). Это не только к этой задаче, а вообще.

1. Заменить в строке все пробелы на запятую (заменить можно любым способом или просто хранить в таком виде)
for I := 1 to <длина_строки> do
if S[I] = ' ' then S[I] := ','

а потом передать строку в список
SL.CommaText := S;

Здесь SL переменная типа TStringList, можно вместо SL использовать свойства Memo.Lines или ListBox.Items и др.

В результате в каждом элементе списка будет отдельное слово. А дальше обрабатывать список слов как хочешь.
Jeni вне форума Ответить с цитированием
Старый 14.06.2007, 20:45   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ну тогда уж писать:
for I := 1 to <длина_строки> do
if (S[i] < 'A') then S[i] := #13
т.е. все символы, до латинского алфавита меняем на энтер (цифры правда тоже)
pu4koff вне форума Ответить с цитированием
Старый 14.06.2007, 21:00   #8
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

А какой смысл, что дальше делать с такой строкой?
Jeni вне форума Ответить с цитированием
Старый 14.06.2007, 21:09   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Jeni Посмотреть сообщение
А какой смысл, что дальше делать с такой строкой?
ну если я не ошибаюсь, то если в свойство Text записать это, то одна строка = 1 слово, т.к. там будет символ энтера. Ну или можно так же на запятую твою менять, но просто вдруг слова отделены точкой или скобкой какой...
pu4koff вне форума Ответить с цитированием
Старый 14.06.2007, 21:14   #10
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Просто не так выразился. Я имел ввиду, что строка в таком виде будет "побитая", а вдруг там цифры и другие "убитые" символы важны?
А про то, чтоб записать в Text и получить список слов я конечно сразу понял. Собственно, вариантов разных уже достаточно.
Jeni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И опять мэйлы.. Опять... Pusher PHP 6 28.06.2008 03:08
Опять автозагрузка RealSHELS Общие вопросы Delphi 7 16.06.2008 01:32
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Опять Word krem Общие вопросы Delphi 3 08.05.2007 16:27
Опять graph nikleb Паскаль, Turbo Pascal, PascalABC.NET 6 16.04.2007 22:58