![]()  | 
	
 
  | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Нужно написать программу которая из файла с кучей мыльников будет доставать мыла зарегенные на определенном сайте(сайт задеться), и сохранять их в другой файл  
		
	
		
		
		
		
		
	
		
		
	
	
	файл тип *.txt 1@mail.ru 2@list.ru 3@mail.ru 4@list.ru 5@mail.ru 6@list.ru 7@list.ru Проблема в том, что не могу сравнить в TStringList значение после "@". ![]()  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Код: 
	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; | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Result:=Copy(S,Pos('@',S)+1,Length(S)); 
		
	
		
		
		
		
		
	
		
		
	
	
	не могу разобраться что делает функция, в конечено файле сохраняеться только mail.ru(3 раза), нужно польностью все мыло. Как я понял, UpperCase - переводит все символы в верхний регистр, а как все в нижний преревести?  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Код: 
	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  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 А зачем +1?  
		
	
		
		
		
		
		
		
			СПС, а если дублирующие встерчаються как их с уже сформированного фаила удалить? Пытался из list1 удалить(list1.delete(s)   значение если оно копируется в list2, но почему то постоянно выходит ошибка о кол-ве строк, как этого избежать?Последний раз редактировалось The King Bear, 19.12.2008 в 12:48.  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 +1 затем, что функция Pos возвращает номер символа @, а тебе надо копировать со следующего. 
		
	
		
		
		
		
		
	
		
		
	
	
	Удалять надо с конца или использовать цикл, отличный от For. Дело в том, что цикл For - цикл с предвычисляемым условием. Т.е. в начале цикла вычисляется условие его окончания. А ты в процессе выполнения цикла удаляешь элементы, т.е. уменьшаешь их кол-во. Вот у тебя ошибка и получается.  |