AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anrufmonitor --> Einer Rufnummer den Namen zuordnen
Thema durchsuchen
Ansicht
Themen-Optionen

Anrufmonitor --> Einer Rufnummer den Namen zuordnen

Ein Thema von ringli · begonnen am 10. Mär 2014 · letzter Beitrag vom 17. Mär 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 12. Mär 2014, 09:03
Controls sind zum Anzeigen von Daten gedacht und nicht als Datenspeicher!
Ja weiß ich. Deswegen habe ich ja nach einer cleveren Lösung gefragt obwohl die Möglichkeiten des Grids ja wirklich verlockend sind...
Na dann bau dir doch da einfach was ...

Anfangen müsstest du mit der Beschreibung, was geht rein und was soll rauskommen.

Also eventuell so?
Delphi-Quellcode:
type
  TPhoneNumberResolver = class abstract
  public
    function GetPersonFrom( const APhoneNumber : string ) : string; virtual; abstract;
  end;
Eine simple konkrete Klasse wäre dann z.B.
Delphi-Quellcode:
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;
Je nachdem wie gut deine Programmierkenntnisse voranschreiten, kannst du die konkrete Ableitung noch verbessern oder eine neue, raffiniertere zusammenbauen.

Deine Anwendung selber bleibt aber gleich, denn die spricht nur die abstrakte Klasse an und der Aufruf bleibt gleicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 12. Mär 2014, 09:39
Und hier eine Klasse, die Telefonnummern in Abhängigkeit des Kontexts normalisiert und vergleicht
Delphi-Quellcode:
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;
UPDATE
Jetzt frisst das Teil eigentlich (fast) alles
Code:
NormalizeNumber:
+49 89 BEIL => 2345
+49 89 2345 => 2345
(089) 2345 => 2345
+48 89 234-5 => 0048892345
Diese (komischen) Konstrukte
Code:
+49 (089) 2345
frisst er nicht (mag er auch nicht)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Mär 2014 um 10:08 Uhr)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
508 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 12. Mär 2014, 19:40
Wow!

Danke das du dir soviel Arbeit gemacht hast SirRufo. Ich werde mich am Wochenende daran begeben, deinen Code in mein Programm zu integrieren.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#14

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 14. Mär 2014, 08:10
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 14. Mär 2014, 14:04
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.
Internationale telefonieren ist super übel.

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.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 14. Mär 2014, 15:42
Hast Du dafür Quellen?
das sind sehr interessante Informationen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
QuickAndDirty

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

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 14. Mär 2014, 17:31
Hast Du dafür Quellen?
das sind sehr interessante Informationen.

Gruß
K-H
Ich habe mir das alles mal mühsam recherchiert.
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.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Mär 2014 um 17:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#18

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 17. Mär 2014, 07:59
Zur Rufnummeranzeige hab ich dies gefunden: http://www.ip-phone-forum.de/showthread.php?t=126270
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#19

AW: Anrufmonitor --> Einer Rufnummer den Namen zuordnen

  Alt 17. Mär 2014, 10:52
Da hat sich aber einiges getan.
Falls jemand auch einen Einstieg sucht
Wikipedia
oder World telephone numbering guide

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz