Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.12.2008, 08:03
Аватар для The King Bear
The King Bear The King Bear вне форума
Прохожий
 
Регистрация: 17.12.2008
Адрес: irk
Сообщения: 16
Репутация: 10
По умолчанию Сортировщик мыл

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

файл тип *.txt

1@mail.ru
2@list.ru
3@mail.ru
4@list.ru
5@mail.ru
6@list.ru
7@list.ru

Проблема в том, что не могу сравнить в TStringList значение после "@".
Ответить с цитированием
  #2  
Старый 17.12.2008, 13:50
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от The King Bear
Код:
Function ExtractMail(S:String):String;
begin
  Result:=Copy(S,Pos('@',S)+1,Length(S);
end;
Далее тебе необходимо проверить все майлы, если соответствует условию, то вписать в файл.
Код:
for index:=0 to list.count-1 do
  s:= UpperCase(ExtractMail(List[Index]));
  if s ='MAIL.RU' then
    list2.add(s);
end;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 19.12.2008, 07:05
Аватар для The King Bear
The King Bear The King Bear вне форума
Прохожий
 
Регистрация: 17.12.2008
Адрес: irk
Сообщения: 16
Репутация: 10
По умолчанию

Result:=Copy(S,Pos('@',S)+1,Length(S));
не могу разобраться что делает функция, в конечено файле сохраняеться только mail.ru(3 раза), нужно польностью все мыло.

Как я понял, UpperCase - переводит все символы в верхний регистр, а как все в нижний преревести?
Ответить с цитированием
  #4  
Старый 19.12.2008, 10:42
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

Код:
for index:=0 to list.count-1 do
  s:= UpperCase(ExtractMail(List[Index]));
  if s ='MAIL.RU' then
    list2.add(s); - здесь не преобразованную строку надо а полностью item
end;

Result:=Copy(S,Pos('@',S)+1,Length(S)); - Копирует из строки S, начиная со следующего за @ символа все что в ней есть.

для перевода в нижний регистр функция LowerCase
__________________
правильный вопрос содержит в себе 90% ответа
Ответить с цитированием
  #5  
Старый 19.12.2008, 12:35
Аватар для The King Bear
The King Bear The King Bear вне форума
Прохожий
 
Регистрация: 17.12.2008
Адрес: irk
Сообщения: 16
Репутация: 10
По умолчанию

А зачем +1?
СПС, а если дублирующие встерчаються как их с уже сформированного фаила удалить?
Пытался из list1 удалить(list1.delete(s) значение если оно копируется в list2, но почему то постоянно выходит ошибка о кол-ве строк, как этого избежать?

Последний раз редактировалось The King Bear, 19.12.2008 в 12:48.
Ответить с цитированием
  #6  
Старый 19.12.2008, 14:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,018
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

+1 затем, что функция Pos возвращает номер символа @, а тебе надо копировать со следующего.
Удалять надо с конца или использовать цикл, отличный от For. Дело в том, что цикл For - цикл с предвычисляемым условием. Т.е. в начале цикла вычисляется условие его окончания. А ты в процессе выполнения цикла удаляешь элементы, т.е. уменьшаешь их кол-во. Вот у тебя ошибка и получается.
Ответить с цитированием
  #7  
Старый 19.12.2008, 15:47
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

может проще для результирующего списка задать
Код:
list.Sorted := true;
list.Duplicates := dupIgnore;
тогда дубли будут игнорироваться
__________________
правильный вопрос содержит в себе 90% ответа
Ответить с цитированием
  #8  
Старый 23.12.2008, 03:08
Аватар для The King Bear
The King Bear The King Bear вне форума
Прохожий
 
Регистрация: 17.12.2008
Адрес: irk
Сообщения: 16
Репутация: 10
По умолчанию

Цитата:
Сообщение от xchrom
может проще для результирующего списка задать
Код:
list.Sorted := true;
list.Duplicates := dupIgnore;
тогда дубли будут игнорироваться

для результирующего списка не работает, только при добавлении.

Последний раз редактировалось The King Bear, 23.12.2008 в 07:14.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:56.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter