AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Handynummer zu ordnen
Thema durchsuchen
Ansicht
Themen-Optionen

Handynummer zu ordnen

Ein Thema von QuickAndDirty · begonnen am 13. Okt 2008 · letzter Beitrag vom 20. Okt 2008
 
QuickAndDirty

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

Re: Handynummer zu ordnen

  Alt 14. Okt 2008, 14:55
Hier mal ein spontaner Entwurf, mal einfach so runtergeschrieben
Bitte um Verbesserung vorschläge...vor allem was die Struktur angeht...
Sind da Logische Fehler die ich übersehen habe?
Delphi-Quellcode:
//A.R. meine Funktion, alles meins, alles .....
//Diese Funktion Vergleicht 2 Telefonnummern, KnownNumber und UnknownNumber,
//und erkennt die Nummer auch wenn Amt(InternExitcode),
//Ortsvorwahl/Handynetzvorwahl(Areacode) oder Landesvorwahl(CountryCode)
//des Standorts fehlen.
//
//Momentane Schwächen:
//Die Funktion versteht nur den Standard NationalExitCode "00"
//Die abweichenden NationalExitCodes sind für:
//USA und Canada "011"
//Kuba "119"
//Suedafrika "09"
//diese Exitcodes sind noch nicht implementiert
//Nur als Beispiel: Von Amerika nach Deutschland telefoniert man mit der Vorwahl
//"01149" statt wie sonst üblich "0049" -> der NationalExitCode ist eben ein anderer
Function EqualPhoneNumber(KnownNumber,UnknownNumber,InternExitCode, AreaCode, CountryCode:String):Boolean;
Var i,j,LastIndex:integer;
    RemainingKnownNumber,
    RemainingUnknownNumber,
    MatchingNumber,
    RemainingAreaCode,
    RemainingCountryCode : String;

  //Liefert die erste unterschiedliche stelle oder 0 wenn keine unterschiede bestehen
  Function EqualStr( a, b : String) : Integer;
  Var I, L, LastIndex:integer;
  Begin
    L := Min( Length(a), Length(b) );
    For i := 1 to L Do
    Begin
      if a[i]<>b[i] then
      Begin
        result := i;
        exit;
      end;
    end;
    if Length(a) <> Length(b) then
      Result := succ(L)
    else
      Result := 0;
  end;

Begin
  Result := false;
  UnknownNumber := StringReplace(UnknownNumber,'+','00',[]);
  KnownNumber := StringReplace(KnownNumber,'+','00',[]);
  if (UnknownNumber <> '') and
     (KnownNumber <> '') then
  Begin
    KnownNumber := ReverseString(KnownNumber);
    UnknownNumber := ReverseString(UnknownNumber);
    AreaCode := ReverseString(areaCode);
    CountryCode := ReverseString(CountryCode);
    InternExitCode := ReverseString(InternExitCode);

    //Nummer von Rechts an vergleichen
    Lastindex := EqualStr(UnknownNumber, KnownNumber);

    if LastIndex > 0 then
    Begin
      RemainingKnownNumber := copy(KnownNumber, LastIndex, Length(KnownNumber));//<-geändert
      RemainingUnknownNumber := copy(UnknownNumber, LastIndex, Length(UnknownNumber));//<-Diese geändert
      MatchingNumber := copy(KnownNumber, 1, LastIndex);

      if RemainingKnownNumber <> 'then
      Begin
        //Area Code in RemainingKnownNumber entfernen wenn er gleich dem
        //Standort ist
        Lastindex := EqualStr(RemainingKnownNumber,areacode);
        If Lastindex > 0 then
        Begin
          RemainingAreacode := Copy(Areacode, LastIndex, Length(Areacode));//<-geändert
          if RemainingAreacode = '0then
            RemainingKnownNumber := Copy(RemainingKnownNumber, LastIndex, Length(RemainingKnownNumber));//<-geändert
          //Sonst nichts enfernen
        end
        else
          RemainingKnownNumber := '';
      end;//if RemainingKnownNumber <> '' then


      if RemainingKnownNumber <> 'then
      Begin
        //Country Code in RemainingKnownNumber entfernen wenn er gleich dem
        //Standort ist
        Lastindex := EqualStr(CountryCode,RemainingKnownNumber);
        If Lastindex > 0 then
        Begin
          RemainingCountryCode := Copy(CountryCode, LastIndex, Length(CountryCode));//<-geändert
          if (RemainingCountryCode = '00') then
          begin
            RemainingKnownNumber := Copy(RemainingKnownNumber, Lastindex, Length(RemainingKnownNumber) )//<-geändert
            // Wenn das Programm in den USA laufen würde müste jetzt auf einen
            // abweichenden Exitcode(011 für Nordamerika) geprüft werden
          end
        end
        else
          RemainingKnownNumber := '';
      end;//if RemainingKnownNumber <> '' then


      If RemainingKnownNumber <> 'then
      Begin
         //Amt Entfernen Falls vorhanden
         If RemainingKnownNumber = InternExitCode then
           RemainingKnownNumber := ''
      end; //If RemainingKnownNumber <> '' then


      If RemainingUnknownNumber <> 'then
      Begin
        //Area Code in RemainingUnknownNumber entfernen wenn er gleich dem
        //Standort ist
        Lastindex := EqualStr(RemainingUnknownNumber,areacode);
        If Lastindex > 0 then
        Begin
          RemainingAreacode := Copy(Areacode, LastIndex, Length(Areacode));//<-geändert
          if RemainingAreacode = '0then
            RemainingUnknownNumber := Copy(RemainingUnknownNumber, LastIndex, Length(RemainingUnknownNumber));//<-geändert
          //Sonst nichts enfernen
        end
        else
          RemainingUnknownNumber := '';
      end;//If RemainingUnknownNumber <> '' then

      if RemainingUnknownNumber <> 'then
      Begin
        //Country Code in RemainingUnknownNumber entfernen wenn er gleich dem
        //Standort ist
        Lastindex := EqualStr(CountryCode,RemainingUnknownNumber);
        If Lastindex > 0 then
        Begin
          RemainingCountryCode := Copy(CountryCode, LastIndex, Length(CountryCode));//<-geändert
          if RemainingCountryCode = '00then
          begin
            RemainingUnknownNumber := Copy(RemainingUnknownNumber, Lastindex, Length(RemainingUnknownNumber))//<-geändert
            // Wenn das Programm in den USA laufen würde müste jetzt auf einen
            // abweichenden Exitcode(011 für Nordamerika) geprüft werden
          end
        end
        else
          RemainingUnknownNumber := '';
      end;//if RemainingUnknownNumber <> '' then

      If RemainingUnknownNumber <> 'then
      Begin
         //Amt Entfernen Falls vorhanden
         If RemainingUnknownNumber = InternExitCode then
           RemainingUnknownNumber := ''
      end; //If RemainingUnknownNumber <> '' then

      result := (RemainingKnownNumber = '') and (RemainingUnKnownNumber = '');//<- diese geändert
    end//if LastIndex > 0 then
    else
      result := true; //Wenn volle übereinstimmung

  end;//if (UnknownNumber <> '') and
      // (KnownNumber <> '') then

end;
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz