![]() |
Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Hallo,
ich bin grade dabei mir mit Hilfe der ![]() ![]() Grundsätzlich müsste das ja in der Art
Delphi-Quellcode:
passieren.
if Rufnummer = '123456' then Showmessage('Max Mustermann');
Meine Frage ist jetzt: Wie würdet ihr das mit dem Parsen am cleversten lösen? Schliesslich sind mehrere eigene Rufnummern (z.B. Wohnzimmer, Flur, Keller) möglich und zu jedem Namenseintrag in einem Telefonbuch sind auch mehrere Rufnummern (z.B. Fest, Mobil, Firma, etc.) denkbar. Bin für jegliche Lösungs- bzw. Denkansätze dankbar. :) |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Nimm ne
Delphi-Quellcode:
- die kannst du mit
TStringList
Delphi-Quellcode:
speichern und mit
SaveTofile()
Delphi-Quellcode:
laden.
LoadFroFile()
Delphi-Quellcode:
// ablegen von Rufnummern
liste.Values['110'] := 'Notruf (Polizei)' liste.Values['112'] := 'Notruf'; liste.Values['0900666666'] := 'Sexy Hotline'; // auslesen einer Rufnummer anrufername := liste.Values['112']; |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Ich lade mir die Originalliste von der Fritzbox (XML) herunter und gehe die Liste der Kontakte und Telefonnummern durch. Ist der Kontakt gefunden kann man Namen und Bild in einer Box anzeigen. Anderenfalls kann man eine Rückwärtssuche im Internet vornehmen.
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Eine Telefonnummer ist auch immer abhängig vom Kontext.
Diese Rufnummern zeigen alle auf den gleichen Anschluss, wenn man sich in Deutschland im Vorwahlbereich 888 befindet:
Code:
Für eine zuverlässige Suche wird also auch der Kontext benötigt.
00498887654321
+498887654321 08887654321 7654321 |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Die Fritzbox gibt nationale Rufnummern mit OKZ und OKZPrefix an. Dabei wird die OKZ bei aktueller Firmware nicht mehr weggelassen, wenn der Anruf aus demselben Vorwahlbereich kommt.
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Danke für die Antworten. :-)
@sx2008: Diese Möglichkeit kannte ich noch gar nicht. Mal sehen ob ich mir daraus etwas basteln kann oder ob ich doch auf die Möglichkeiten vom NextGrid zurückgreife. @Garfield: Das Fritz!Box Telefonbuch wollte ich eigentlich nicht benutzen, zumal ich mit XML nicht wirklich warm werde... :-( |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Zitat:
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
ich nehme mal an das NextGrid hat sowas wie das Grid von TMS: SaveAsCsv, SaveAsXml, ...
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Zitat:
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Zitat:
Zitat:
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Zitat:
Anfangen müsstest du mit der Beschreibung, was geht rein und was soll rauskommen. Also eventuell so?
Delphi-Quellcode:
Eine simple konkrete Klasse wäre dann z.B.
type
TPhoneNumberResolver = class abstract public function GetPersonFrom( const APhoneNumber : string ) : string; virtual; abstract; end;
Delphi-Quellcode:
Je nachdem wie gut deine Programmierkenntnisse voranschreiten, kannst du die konkrete Ableitung noch verbessern oder eine neue, raffiniertere zusammenbauen.
type
TSimplePhoneNumberResolver = class( TPhoneNumberResolver ) private FPhoneNumberStrings : TStrings; public constructor Create( APhoneNumberStrings : TStrings ); destructor Destroy; override; function GetPersonFrom( const APhoneNumber : string ) : string; override; end; constructor TSimplePhoneNumberResolver.Create( APhoneNumberStrings : TStrings ); begin inherited Create; FPhoneNumberStrings := TStringList.Create; FPhoneNumberStrings.Assign( APhoneNumberStrings ); end; destructor TSimplePhoneNumberResolver.Destroy; begin FPhoneNumberStrings.Free; inherited; end; function GetPersonFrom( const APhoneNumber : string ) : string; begin Result := FPhoneNumberStrings.Values[APhoneNumber]; end; Deine Anwendung selber bleibt aber gleich, denn die spricht nur die abstrakte Klasse an und der Aufruf bleibt gleicht ;) |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Und hier eine Klasse, die Telefonnummern in Abhängigkeit des Kontexts normalisiert und vergleicht
Delphi-Quellcode:
UPDATE
type
TPhoneContext = record IntlPrefix : string; IntlNumber : string; NatPrefix : string; NatNumber : string; end; const MunichPhoneContext : TPhoneContext = ( IntlPrefix : '00'; IntlNumber : '49'; NatPrefix : '0'; NatNumber : '89' ); type TPhoneNumberComparer = class private FContext : TPhoneContext; function NumberClearing( const Number : string ) : string; public property Context : TPhoneContext read FContext write FContext; function NormalizeNumber( const Number : string ) : string; function IsSameNumber( const Number1, Number2 : string ) : Boolean; end; { TPhoneNumberComparer } function TPhoneNumberComparer.IsSameNumber( const Number1, Number2 : string ) : Boolean; begin Result := NormalizeNumber( Number1 ) = NormalizeNumber( Number2 ); end; function TPhoneNumberComparer.NormalizeNumber( const Number : string ) : string; begin Result := NumberClearing( Number ); if Result.StartsWith( '+' ) then Result := Context.IntlPrefix + Result.Substring( 1 ); if Result.StartsWith( Context.IntlPrefix + Context.IntlNumber ) then begin Result := Context.NatPrefix + Result.Substring( Length( Context.IntlPrefix + Context.IntlNumber ) ); end; if Result.StartsWith( Context.NatPrefix + Context.NatNumber ) then begin Result := Result.Substring( Length( Context.NatPrefix + Context.NatNumber ) ); end; end; function TPhoneNumberComparer.NumberClearing( const Number : string ) : string; var LIdx : Integer; LChar : Char; begin Result := ''; for LIdx := 0 to Number.Length - 1 do begin case Number.ToUpper.Chars[LIdx] of 'A', 'B', 'C' : LChar := '2'; 'D', 'E', 'F' : LChar := '3'; 'G', 'H', 'I' : LChar := '4'; 'J', 'K', 'L' : LChar := '5'; 'M', 'N', 'O' : LChar := '6'; 'P', 'Q', 'R', 'S' : LChar := '7'; 'T', 'U', 'V' : LChar := '8'; 'W', 'X', 'Y', 'Z' : LChar := '9'; '+', '0' .. '9' : LChar := Number.Chars[LIdx]; else LChar := #0; end; if LChar <> #0 then Result := Result + LChar; end; end; Jetzt frisst das Teil eigentlich (fast) alles
Code:
Diese (komischen) Konstrukte
NormalizeNumber:
+49 89 BEIL => 2345 +49 89 2345 => 2345 (089) 2345 => 2345 +48 89 234-5 => 0048892345
Code:
frisst er nicht (mag er auch nicht) ;)
+49 (089) 2345
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Wow! :shock:
Danke das du dir soviel Arbeit gemacht hast SirRufo. :thumb: Ich werde mich am Wochenende daran begeben, deinen Code in mein Programm zu integrieren. |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
So wie ich mitbekommen habe, werden die nationalen Rufnummern auf Ortskennzahlenprefix, Ortskennzahl und Rufnummer normalisiert. Früher (bis 5.**?) wurde die OKZ weggelassen, wenn der Gesprächspartneer die selbe hatte. Bei internationalen Nummern weiß ich es nicht. Sir Rufos Klasse könnte bei der Wählhilfe sehr interessant sein.
|
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Zitat:
Du hast beim Telefon sogenannte Exitcodes. Exitcode für die Stadt = 0 Exitcode für die Nation = 00 dahinter wählt man dann die Nummer des Länder Knotens+Statdtknoten oder die Nummer des Stadtknotens. Leider gibt es dann noch Mobilfunknetze die gelten als eigene stadt. In Europa ist das mit den Exit codes auf 0 und 00 genormt, aber es gibt Ausnahmen In Italien wurden die Rufnummern knapp. Also hat man dort die 0+Vorwahl in die telefonnummer integriert. Es gibt da keine Stadt Vorwahlen mehr. Ruft man in Südtirol an muss die 0 nach der Vorwahl für Italien mit angewählt werden. Es wird lustiger. Wenn du in den USA bist, ist 00 nicht der nationale exit code sondern 011. Bei Kuba ist es 119 Wenn man von den USA aus bestimmte britische Inseln in der Caribik anrufen will. muss man wiederum kein internationales gespräch führen. In den USA ist außerdem der exit code für die Stadt, von Ort zu Ort verschieden. Telefonieren ohne Standort Informationen geht nicht. |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Hast Du dafür Quellen?
das sind sehr interessante Informationen. Gruß K-H |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Zitat:
Aber es gibt diverse Quellen die man findet, wenn man in Google danach sucht. Also es ist einfacher Belege für die Richtigkeit dessen was ich schrieb zu finden, als das von null an zu recherchieren. Also quellen für alles? Such selbst! Wenn dich eine bestimmte Sache interessiert , könnte ich dir evtl helfen. |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Zur Rufnummeranzeige hab ich dies gefunden:
![]() |
AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Da hat sich aber einiges getan.
Falls jemand auch einen Einstieg sucht ![]() oder ![]() Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 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