Модуль "Справочник" (часть 5) - GetPhoneBookParamsEx

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 118
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
//******************************************************************
//******************** новая телефонная книга ********************
//******************************************************************
function TfrmAT_PhoneBook.GetPhoneBookParamsEx(var xPP: TxPhoneBookParamEX): boolean;
var
  str, tmp, tmp2: string;
  x, i, min, max: integer;
  xStrLst: TStringList;
begin
result:= false;
if Form1.IsATConnected then
  begin
    min:= 0; max:= 0;

    FillMemory(@xPP, sizeof(xPP), 0);
    str:= SendATCommand('AT+CPBS=ME');
    if (str <> '') and (xComPort.ATResult) then
      begin
        str:= SendATCommand('AT+MPBRE=?');
        if (str <> '') and (xComPort.ATResult) then
          begin
            str:= ParseRevers(str, ':'); //(1-2000),(1-13),40,100,19,(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            ExtractStr(str, '('); //1-2000),(1-13),40,100,19,(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, '),'); //(1-13),40,100,19,(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ParseRevers(tmp, '-'); xPP.MECount:= strtoint(tmp);
            ExtractStr(str, '('); //1-13),40,100,19,(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, '),'); //40,100,19,(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ParseRevers(tmp, '-'); xPP.RecordCount:= strtoint(tmp);
            tmp:= ExtractStr(str, ',');  xPP.ME_NumberLength:= strtoint(tmp); //100,19,(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ',');  xPP.ME_NameLength:= strtoint(tmp); //19,(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //(0-1),64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ',');  xPP.ME_EmailLength:= strtoint(tmp); //(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //32,(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); //(0-1,255),264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, '),'); //264,(0),62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, '),'); //62,62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.Street1Length:= strtoint(tmp);  //62,32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.Street2Length:= strtoint(tmp);  //32,32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.CityLength:= strtoint(tmp);  //32,32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.RegionLength:= strtoint(tmp);  //32,32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.PostIndexLength:= strtoint(tmp);  //32,50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.CountryLength:= strtoint(tmp);  //50,264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.NicknameLength:= strtoint(tmp);  //264,7,2,2,2,128,128
            tmp:= ExtractStr(str, ',');
            tmp:= ExtractStr(str, ','); xPP.cntPhones:=  strtoint(tmp);//7,2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.cntEmails:=  strtoint(tmp);//2,2,2,128,128
            tmp:= ExtractStr(str, ','); xPP.cntSites:=  strtoint(tmp);//2,2,128,128
            tmp:= ExtractStr(str, ','); //2,128,128
            tmp:= ExtractStr(str, ','); xPP.UrlLength:= strtoint(tmp);   //128,128 #13#10
            tmp:= ExtractStr(str, #13); 
            tmp:= ExtractStr(tmp, ','); xPP.NoteLength:= strtoint(tmp);   //128
      end;
    end;  
    str:= '';
    str:= SendATCommand('AT+CPBS=SM');
    if (str <> '') and (xComPort.ATResult) then
      begin
        str:= SendATCommand('AT+CPBR=?');
        // #$D#$A'+MPBR: 1001-1200,40,26,8,0-1,50,(0-5,10-14,16-19,255),(0),(0-1),(1-30),(255),25,(0-1,255),263,(0)'#$D#$A#$D#$A'OK'#$D#$A
        // +MPBR: 1-180,40,20,14,0-1,64,(255),(0),(0-1),(1-10),(255),32,(0-1,255),264,(0),62,62,32,32,32,32,50,264
        if (str <> '') and (xComPort.ATResult) then
        begin
          result:= true;
          str:= ParseRevers(str, ':');
          tmp:= ExtractStr(str, '(');          
          tmp:= ExtractStr(str, '),');
          min:= StrToInt(ExtractStr(tmp, '-'));
          max:= StrToInt(tmp);
          //xPP.TotalRec:= xPP.TotalRec + max;
          xPP.SMCount:= max;
          xPP.TotalRec:= xPP.MECount + xPP.SMCount;
          tmp:= ExtractStr(str, ',');  xPP.SM_NumberLength:= strtoint(tmp);
          tmp:= ExtractStr(str, #13);
          tmp:= ExtractStr(tmp, ',');  xPP.SM_NameLength:= strtoint(tmp);
        end;
      end
    else result:= false;
    str:= SendATCommand('AT+CPBS=MT');
  end;
end;
Rambler's Top100