Thema: Delphi Handynummer zu ordnen

Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#44

Re: Handynummer zu ordnen

  Alt 16. Okt 2008, 12:07
Also Amt wird in der Regel nicht durch die Telefonanlage weiter gegeben.
Wenn es Ausnahmnsweise doch so ist muss Amt angegeben werden.

Die Handynetzvorwahl oder die Ortsvorwahl werden bei allen von Extern kommenden Gesprächen angezeigt

habe noch mal von neu angefangen und verwende jetzt das hier:

Es funktioniert unter den diskutierten Bedingungen...und es funktioniert nicht in Italien...
ich glaube dem Problem stelle ich mich erst wenn einer unserer Italien Kunden das Telefonmodul einsetzt.
Delphi-Quellcode:
// Liefert die erste unterschiedliche Stelle oder 0 wenn
// keine Unterschiede bestehen.
Function EqualStr(a : String;
                  b : String) : Integer;
Var I : Integer;
    L : Integer;
    iLenA : Integer;
    iLenB : Integer;
Begin
  iLenA := Length(a);
  iLenB := Length(b);
  L := Min(iLenA,iLenB);
  For i := 1 to L Do
  Begin
    if a[i] <> b[i] then
    Begin
      result := i;
      exit;
    end;
  end;
  if iLenA <> iLenB then
  begin
    Result := succ(L);
    exit;
  end
  else
  begin
    Result := 0;
  end;
end;

Function FilterString(s,AllowedChars:String):String;
var i, j : integer;
    Erlaubt : boolean;
Begin
  Result := s;
  For i := 1 to length(s) do
  Begin
    Erlaubt := false;
    for j := 1 to Length(AllowedChars) do
    Begin
      if (Result[i] = AllowedChars[j]) then
      Begin
        Erlaubt := true;
        Break;
      end
    end;
    if not erlaubt then
      delete(result,i,1);
  end;
end;


Function EqualCaller(NumberOfCaller,
                     CallingNumber,
                     InternExitCode,
                     AreaCode,
                     CountryCode,
                     NationalExitcode:String):boolean;

  function DetectCode(aNumber,aCode:string): Boolean;
  Begin
    If (ACode = '') then
      Result := False
    else
      Result := (EqualStr(aNumber,Acode) = succ(length(acode)));
  end;

Var InternExitCodeDetected:boolean;
    InternalCalling:Boolean;
    MobileInternationalCalling:Boolean;
    CallerNumberPrefix:Boolean;
Begin
  Result := false;
  NumberOfCaller := FilterString(StringReplace(NumberOfCaller,'+',NationalExitcode,[]),'1234567890');
  CallingNumber := FilterString(StringReplace(CallingNumber,'+',NationalExitcode,[]),'1234567890');
  If (NumberOfCaller <> '') and (CallingNumber <> '') then
  begin
    //Amt elliminieren
    InternExitCodeDetected := DetectCode(CallingNumber,InternExitCode);
    If InternExitCodeDetected then
      delete(CallingNumber,1,length(internExitCode));
    //Amt Elliminiert

    InternalCalling := (not InternExitCodeDetected) and (InternExitCode<>'');


    If not InternalCalling then // Wenn Anruf von extern
    begin
      // Countrycode + AereaCode ohne Präfix elliminieren
      if length(CallingNumber) > Length(CountryCode) then
      begin
        MobileInternationalCalling := DetectCode(CallingNumber, CountryCode);
        if MobileInternationalCalling then
        Begin
          Delete(CallingNumber,1,length(CountryCode));
          CallerNumberPrefix := DetectCode(NumberOfCaller,'0'); //Prefix ermitteln
          if CallerNumberPrefix then
            Delete(NumberOfCaller,1,1) //Prefix löschen
          else
            exit;//Result := false; Weil ist InternalCaller aber nicht InternalCalling
        end;
      end;
      // Countrycode + AreaCode ohne Präfix elliminiert!
    end;
    Result := (NumberOfCaller = CallingNumber);
  end;// If (NumberOfCaller <> '') and (CallingNumber <> '') then
end;//Function EqualCaller(NumberOfCaller,....
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat