Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Telefonnummer in Bestandteile zerlegen (https://www.delphipraxis.net/78862-telefonnummer-bestandteile-zerlegen.html)

TKC 12. Okt 2006 09:27


Telefonnummer in Bestandteile zerlegen
 
Hallo,

ich baue gerade ein kleines Anrufer Log.

Ich bekomme jetzt die Telefonnummern von meiner Telefonanlage und will die Nummern in ihre Bestandteile,
wie Länderkennung,Vorwahl,Rufnummer, zerlegen.

Ich habe eine Tabelle mit den entsprechenden Vorwahlen und arbeite mit Locate um z.b. den Ort zu bekommen.

Bisher mache ich das so...

Delphi-Quellcode:
        // Ort Finden
        if StrLeft(qryAnrufe.FieldByName('telnummer').AsString, 1) = '0' then
          begin
            sVw := StrLeft(qryAnrufe.FieldByName('telnummer').AsString, 6);
            if tblVorwahlen.Locate('vorwahl', sVw, []) then
              li.Captions[4] := tblVorwahlen.FieldByName('ort').AsString
            else
              begin
                sVw := StrLeft(qryAnrufe.FieldByName('telnummer').AsString, 5);
                if tblVorwahlen.Locate('vorwahl', sVw, []) then
                  li.Captions[4] := tblVorwahlen.FieldByName('ort').AsString
                else
                  begin
                    sVw := StrLeft(qryAnrufe.FieldByName('telnummer').AsString, 4);
                    if tblVorwahlen.Locate('vorwahl', sVw, []) then
                      li.Captions[4] := tblVorwahlen.FieldByName('ort').AsString
                    else
                      begin
                        sVw := StrLeft(qryAnrufe.FieldByName('telnummer').AsString, 3);
                        if tblVorwahlen.Locate('vorwahl', sVw, []) then
                          li.Captions[4] := tblVorwahlen.FieldByName('ort').AsString
                      end;
                  end;
              end;
          end;
Aber irgendwie gefällt mir diese Lösung nicht besonders. Habt ihr evtl. nen besseren Ansatz für mich ?

mkinzler 12. Okt 2006 09:32

Re: Telefonnummer in Bestandteile zerlegen
 
Wie sieht eine solche Nummer aus?

TKC 12. Okt 2006 09:40

Re: Telefonnummer in Bestandteile zerlegen
 
z.B. so

0350465x1x3

oder

016285x2x50

oder

07711x89x8x

Das Problem ist das die Vorwahlen eine unterschiedliche Länge haben können.

mkinzler 12. Okt 2006 09:44

Re: Telefonnummer in Bestandteile zerlegen
 
Zitat:

Das Problem ist das die Vorwahlen eine unterschiedliche Länge haben können.
Und wie willst du dann erkennen, wo die eigentliche (Basis-)Telefonnummer anfängt? Ist imho nur mit Abgleich einer Voewahlenliste erreichbar.

shmia 12. Okt 2006 09:53

Re: Telefonnummer in Bestandteile zerlegen
 
ein kleine Unterfunktion bringt Ordnung in den Code.
Du brauchst eine Funktion, die dir x-Stellen der Telnr von links liefert:
Delphi-Quellcode:
function PhoneLeftPart(anz:integer):string;
begin
   result := StrLeft(TrimLeft(qryAnrufe.FieldByName('telnummer').AsString), anz);
end;
Dann einfach das Ganze in einer Schleife:
Delphi-Quellcode:
ort := 'unbekannt';
for i := 6 downto 3 do
begin
   sVw := PhoneLeftPart(i);
   if tblVorwahlen.Locate('vorwahl', sVw, []) then
   begin
      ort := tblVorwahlen.FieldByName('ort').AsString
      break;
   end;
end;
li.Captions[4] := ort;
Mit Zwischenvariablen (z.B. ort:string)wird die Sache schon wesentlich eleganter.

marabu 12. Okt 2006 10:00

Re: Telefonnummer in Bestandteile zerlegen
 
Hallo,

eventuell stecken in diesem thread ein paar Ideen, die hier wiederverwendet werden können:
telefonnummern trennen in vorwahlrufnummer mit tsql

Grüße vom marabu

TKC 12. Okt 2006 15:11

Re: Telefonnummer in Bestandteile zerlegen
 
ok...

Danke für die Anregungen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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