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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2012, 18:16   #1
beautifulboy
Новичок
Джуниор
 
Регистрация: 20.11.2012
Сообщений: 2
По умолчанию Небольшая проблема при работе с текстом (Delphi 7)

Добрый вечер всем!
Недавно начал изучать язык программирования Delphi7.Очень увлекательная вещь. Опыта правда маловато но я учусь. Решил написать программу которая бы из текста формата
текст 1:текст 2
текст 3:текст 4
сортировала то что не подходит критериям в одну колонку а что подходит в другую.
В данном случае длина текст 2 после":" меньше 8 символов.
Теперь нужно реализовать чтоб если в текст 2 нету ни одной большой буквы и цифры в одну колонку а если есть в другую.

Выражаясь короче нужно сделать чтоб программа удаляла(или заносила в другую колонку) текст 2 если там меньше 8 символов, нет ни одной большой буквы и цифры.
Я потратил кучу времени но никак не могу сообразить. Как это можно реализовать???

Код:
procedure TForm1.btn1Click(Sender: TObject);
var i:string;
b:Boolean;
begin
 b:=False;
 b:=dlgOpen1.Execute;
if b then
mmo1.Lines.LoadFromFile(dlgOpen1.FileName);
edt1.Text:=dlgOpen1.FileName ;
end;

procedure TForm1.btn2Click(Sender: TObject);
var
p,i:Integer;
s:string;
begin
repeat
s:=mmo1.Lines[0];
p:=mmo1.Lines.Count;
i:= Pos(':',s);
if Length((s))-(i)<8 then
mmo3.Lines.Add(s);
if Length((s))-(i)>=8 then
mmo2.Lines.Add(s) ;
mmo1.Lines.Delete(0);
until (i=0);
end;
end.
PS. Не судите строго у меня опыта 2 дня. Я почти разгадал эту загадку но теперь он читает тока первый символ а не весь текст.

Последний раз редактировалось beautifulboy; 20.11.2012 в 18:19.
beautifulboy вне форума Ответить с цитированием
Старый 20.11.2012, 18:54   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
i:=pos(':',s);
flagbig:=false;// изначально считаем что больших букв нет
flagdigit:=false;
for j:=i+1 {начинаем со следующей за :} to length(s) do 
begin
  if s[j] in ['А'..'Я'] {множество больших русских букв} then flagbig:=true; // отмечаем тот факт что попалась большая буква
  if s[j] in ['0'..'9'] {множество цифр} then flagdigit:=true;
//при желании множества можно объединить
  if s[j] in ['A'..'Z', 'A'..'Я', '0'..'9'] {англ, русские большие и цифры в одном флаконе} then ...
end;

if flagdigit or flagbig then // проверяем наличие flagbig=true/отсутсвие flagbig=false больших и добавляем в нужный мемо
  mmo2.add(s) 
else 
  mmo3.add(s);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.11.2012 в 19:00.
evg_m вне форума Ответить с цитированием
Старый 21.11.2012, 01:37   #3
beautifulboy
Новичок
Джуниор
 
Регистрация: 20.11.2012
Сообщений: 2
По умолчанию

Большое спасибо evg_m за чёткое и понятное объяснение. Даже моего уровня знаний хватило чтобы разобраться.
beautifulboy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Небольшая проблема с файлом einstein22 Паскаль, Turbo Pascal, PascalABC.NET 4 24.05.2012 01:27
небольшая проблема kojoj3ok Microsoft Office Excel 2 01.03.2011 09:11
Небольшая проблема с запросом к БД mrgrudge PHP 3 15.09.2010 19:05
Небольшая проблема с ListView mixer94 Компоненты Delphi 5 12.08.2009 09:08