AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Handynummer erkennen

Ein Thema von shmia · begonnen am 1. Jun 2010 · letzter Beitrag vom 2. Jun 2010
 
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Handynummer erkennen

  Alt 1. Jun 2010, 17:17
Ich möchte erkennen, ob es sich bei einer Telefonnummer um eine Handynummer (mobile phone number) handelt.
Dazu habe ich mir folgende Code zusammengebaut:
Delphi-Quellcode:
function IsMobilePhoneNumber(x:string):Boolean;
const
   vorwahl_DE: array[0..16] of string =
   (
      // T-Mobile
      '151', '160', '170', '171', '175',
      // vodafone
      '152', '162', '172', '173', '174',
      // E-Plus
      '157', '163', '177', '178',
      // O2
      '159', '176', '179'   );
var
   p1 : Integer;
begin
   x := StrRemoveChars(x, [' ','P','-']); // Störzeichen entfernen
   if x = 'then
   begin
      Result := False;
      Exit;
   end;

   // Nummer mit diesem Aufbau behandeln
   // +xx(0)170yyyyyyy
   if x[1] = '+then
   begin
      // die (0) rausschneiden
      p1 := Pos('(0)', x);
      if (p1 > 1) then
         Delete(x, p1, 3);
   end;

   if x[1] ='0then
      Result := StrHasPrefix(Copy(x, 2, 10), vorwahl_DE)
   else if StrHasPrefix(x, ['+49']) then
   begin
      Result := StrHasPrefix(Copy(x, 4,10), vorwahl_DE);
   end
   else
      Result := False;
end;
Irgendwelche Ideen, was man noch verbessern könnte?
Oder wie man auch Handynummern im europäischen Ausland erkennen kann?


Die Funktionen StrRemoveChars() und StrHasPrefix() stammen aus der JCL.
Ich reiche sie hier mal nach für den Fall, dass jemand den Code ohne JCL testen möchte:
Delphi-Quellcode:
function StrRemoveChars(const S: string; const Chars: TSysCharSet): string;
var
  Source, Dest: PChar;
  Len, Index: Integer;
begin
  Len := Length(S);
  SetLength(Result, Len);
  UniqueString(Result);
  Source := PChar(S);
  Dest := PChar(Result);
  for Index := 0 to Len-1 do
  begin
    if not (Source^ in Chars) then
    begin
      Dest^ := Source^;
      Inc(Dest,SizeOf(Char));
    end;
    Inc(Source,SizeOf(Char));
  end;
  SetLength(Result, (Longint(Dest) - Longint(PChar(Result))) div SizeOf(Char));
end;
function StrPrefixIndex(const S: string; const Prefixes: array of string): Integer;
var
  I: Integer;
  Test: string;
begin
  Result := -1;
  for I := Low(Prefixes) to High(Prefixes) do
  begin
    Test := StrLeft(S, Length(Prefixes[I]));
    if AnsiSameText(Test, Prefixes[I]) then
    begin
      Result := I;
      Break;
    end;
  end;
end;
function StrHasPrefix(const S: string; const Prefixes: array of string): Boolean;
begin
  Result := StrPrefixIndex(S, Prefixes) > -1;
end;
Andreas
  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 21:08 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