Модуль "Стили звонка" (часть 4) - CompareMelody

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 181
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
function TfrmP2K_RingStyles.CompareMelody(S1, S2: string): integer;
{*****} function GetNum(C: char): integer;
{*****} //динам. функция получения номера символа из нашего массива
{*****} var
{*****}   i: integer;
{*****} begin
{*****}   Result := 0;
{*****}   for i := 1 to 136 do
{*****}     if Chars[i] = C then begin Result := i; exit; end;
{*****} end;
{*****} function CompCh(C1, C2: integer): integer;
{*****} //динам. функция определения "что больше???"
{*****} begin
          if C1 = C2 then Result := 0;
          if C1 > C2 then Result := 1;
          if C1 < C2 then Result := -1;
{*****} end;

var
  i, xS1, xS2, CurrR: integer;
begin //начало функции сортировки
  Result := 0;
  CurrR := 0; //временный результат
  if S1 <> S2 then
  begin
    //сканирование сток посимвольно
    for i := 1 to Length(S1) do
    begin
      if Length(S2) >= i then
      begin
        xS1 := GetNum(S1[i]); xS2 := GetNum(S2[i]);
        if (xS1 <> 0) and (xS2 <> 0) and (xS1 <> xS2)
          then CurrR := CompCh(xS1, xS2)
          else begin
                 if (xS1 = 0) or (xS2 = 0) then begin
                                                  if xS2 = 0 then CurrR := 1;
                                                  if xS1 = 0 then CurrR := -1;
                                                end;
               end;
        if CurrR <> 0 then begin Result := CurrR; Exit; end;
      end
      else
      begin
        Result := CurrR;
        Exit;
      end;
    end;
  end;
end;
Rambler's Top100