Показать сообщение отдельно
  #6  
Старый 27.05.2009, 21:39
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Насчет слова из строки можно так :

Код:
function Get_CountWords_In_String(UnChar : TSetChars; Sx : string) : integer;
//Определить кол-во слов в строке
//UnChar - множество символов - разделителей слов
var
  InWord : byte;
  i : integer;
begin
  Result:=0;
  if length(Sx)>0 then begin
     InWord := 0;
     i:=0;
     while i<length(Sx) do
      begin
       i:=i+1;
       if not (Sx[i] in UnChar) then begin //этот символ - НЕ разделитель
          if InWord<=0 then Result:=Result+1; //переход на начало слова
          InWord:=1; //Мы внутри слова
       end
       else begin //этот символ - разделитель
          InWord:=0; //Мы снаружи слова
       end;
     end;
  end;
end;



function Get_Word_From_String(UnChar : TSetChars; Sx : string; NumWord : integer) : string;
//Получить слово из строки по номеру
//UnChar - множество символов - разделителей слов
//NumWord - номер слова
var
  InWord    : byte;
  NumWordCur, i : integer;
begin
  Result:='';
  if length(Sx)>0 then begin
     if NumWord>0 then begin
       InWord := 0;
       NumWordCur:=0;
       i:=0;
       while i<length(Sx) do
        begin
         i:=i+1;
         if not (Sx[i] in UnChar) then begin //этот символ - НЕ разделитель
            if InWord<=0 then NumWordCur:=NumWordCur+1; //мы - на начале слова
            InWord:=1; //Мы внутри слова
            if NumWordCur=NumWord then begin //Это - наше слово
               Result:=Result+Sx[i];   //и мы его выдираем из строки
            end;
         end
         else begin  //этот символ - разделитель
            InWord:=0; //Мы снаружи слова
            if NumWordCur=NumWord then begin //Это было - наше слово
               i:=length(Sx)+1; //поэтому, выходим из цикла и функции
            end;
         end;
       end;
     end;
  end;
end;


Ответить с цитированием