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

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 115
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
procedure TfrmP2K_RingStyles.ReadMelodyByPattern(APAtern: string; AFolder: string; var AMelList: TStringList; AfrmProgress: TfrmProgress);
var
  xMF: TMotoFileList;
  i, cntFiles: integer;
  str, tmp, ext: string;
  t, y, m: integer;

begin
  if not Form1.IsP2KConnected then exit;
  try
    cntFiles:= p2k.GetFilesCount(APAtern);
    if cntFiles < 1 then exit;
    SetLength(xmf, cntFiles);
    if p2k.GetFileList(str, cntFiles, xmf, cntFiles, AfrmProgress) then
      begin
        if xmf <> nil then
          begin
            for i:=0 to High(xmf) do
              begin
                str:= xMF[i].Name;
                if Pos(AFolder, str) > 0 then
                  begin
                    ExtractStr(str, AFolder);
                    for m:= length(str) downto 1 do
                      if str[m]='/' then begin
                                           Delete(str, 1, m);
                                           break;
                                         end;
                    if not CorrectMotoName(str) then
                      begin
                        {
                        tmp:= '';
                        ext:= ExtractStr(str, '.');
                        y:= 0; t:=0;
                        y:= length(str)-4;
                        for t:= 1 to y do tmp:= tmp + '04' + IntToHex(ord(str[t]), 2);
                        y:= length(str);
                        tmp:= tmp + '00' + IntToHex(ord(str[y-3]), 2) +
                                    '00' + IntToHex(ord(str[y-2]), 2) +
                                    '00' + IntToHex(ord(str[y-1]), 2) +
                                    '00' + IntToHex(ord(str[y]), 2);
                       tmp:= UCS2ACSI(tmp, true);
                       str:= trim(tmp);
                       }
                       str:= TryCorrectName('', str);             
                      end;
                    if ansilowercase(AFolder[2]) <> 'b'
                      then begin
                             if ansilowercase(AFolder[2]) = 'a'
                               then AMelList.Add(str + #1 + inttostr(convert_word(xMF[i].Attr)) + #2 + '0')
                               else if (ansilowercase(AFolder[2]) = 'c') or
                                       (ansilowercase(AFolder[2]) = 'e')
                                       then AMelList.Add(str + #1 + inttostr(convert_word(xMF[i].Attr)) + #2 + '2')
                           end  
                      else AMelList.Add(str + #1 + inttostr(convert_word(xMF[i].Attr)) + #2 + '1');
                  end;
              end;
          end;
      end;
  finally
  end;  
end;
Rambler's Top100