AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign String in einer Stringliste an Trennzeichen zerlegen

String in einer Stringliste an Trennzeichen zerlegen

Ein Thema von Trafel21 · begonnen am 10. Mai 2019 · letzter Beitrag vom 17. Mai 2019
Antwort Antwort
Seite 1 von 2  1 2   
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#1

String in einer Stringliste an Trennzeichen zerlegen

  Alt 10. Mai 2019, 09:09
Hallo zusammen,

Ich möchte aus meiner Telefonanlage einkommende Nummern auslesen, via Asterisk.
Ich hab ein Problem und zwar hab ich einen sehr großen String mit Zeilenumbrüchen und möchte versuchen die Nummer zu extrahieren.

Der String:

Zitat:
Event: Newchannel
Privilege: call,all
Channel: PJSIP/trunk_1-0000012f
ChannelState: 0
ChannelStateDesc: Down
CallerIDNum: 55555555
CallerIDName:
ConnectedLineNum:
ConnectedLineName:
Language: en
AccountCode:
Context: default
Exten: s
Priority: 1
Callid:
Linkedid: 1557211767.720
PageFlag: false
Application:
Reg_calleenum:
Reg_callernum:
Reg_callername:
Uniqueid: 1557211767.720

Wie würdet ihr versuchen an die Nummer zu kommen?

Geändert von Luckie (10. Mai 2019 um 12:44 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: String

  Alt 10. Mai 2019, 09:16
Hallo,
TStringList
LoadFromFile

und dann die StringList durchlaufen und mit Pos(ZeilenString, 'CallerIDNum: ')=1 die richtige Zeile finden.
Und zum Schluss mit Copy oder StringReplace die Nummer extrahieren.
Heiko
  Mit Zitat antworten Zitat
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#3

AW: String

  Alt 10. Mai 2019, 09:43
Hallo,
TStringList
LoadFromFile

und dann die StringList durchlaufen und mit Pos(ZeilenString, 'CallerIDNum: ')=1 die richtige Zeile finden.
Und zum Schluss mit Copy oder StringReplace die Nummer extrahieren.
Danke für die Antwort.

Die String Variable ist bereits in Delphi gespeichert und mit Pos hab ich bereits die CallerIDNum ermittelt. Bzw eine Funktion geschrieben um auch andere Zeilen zu ermittelt:

Zitat:
function Tbc_Asterisk_CallControl.SelectCommand(ContainStri ng: string; Buffer: string): boolean;
begin
If (Pos(ContainString, Buffer) <> 0)
then result := True
else Result := false;
end;
Das Problem ist nur irgendwie fehlt mir der Gedanke, wie ich mit StringReplace nur an die Nummer komme, die Nummer kann unterschiedlich lang sein. Kann ich irgendwie bis zum Zeilenumbruch (ASCI #13) eine Abfrage schreiben?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: String

  Alt 10. Mai 2019, 09:52
Delphi-Quellcode:
var
  sl: TStrings;
..
  try
    sl := TStringList.Create;
    sl.Text := Buffer;
    result := sl[sl.IndexOf( ContainString)];
  finally
    sl.Free;
  end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#5

AW: String

  Alt 10. Mai 2019, 09:56
Wir wäre es denn hiermit:
Delphi-Quellcode:
function ExtractCallerID(const AFileName: string): string;
var
  lst: TStringList;
begin
  lst := TStringList.Create;
  try
    lst.LoadFromFile(AFileName);
    lst.NameValueSeparator := ':';
    Result := Trim(lst.Values['CallerIDNum']);
  finally
    lst.Free;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.275 Beiträge
 
Delphi 12 Athens
 
#6

AW: String

  Alt 10. Mai 2019, 09:58
elegant wie immer...
  Mit Zitat antworten Zitat
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#7

AW: String

  Alt 10. Mai 2019, 10:03
Ah Okay, ich hab den Kontext von TStringlist falsch aufgefasst.

@edit: Funktioniert, wieder was dazu gelernt. Nochmals vielen dank.

Geändert von Trafel21 (10. Mai 2019 um 10:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: String in einer Stringliste an Trennzeichen zerlegen

  Alt 10. Mai 2019, 12:45
Ich habe den Titel mal etwas aussagekräftiger formuliert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: String in einer Stringliste an Trennzeichen zerlegen

  Alt 10. Mai 2019, 13:26
Nur der Vollständigkeit halber

Delphi-Quellcode:
function GetCallerId(str: string): string;
var
  Match: TMatch;
begin
  result := '';
  Match := TRegex.Create('CallerIDNum:(.*)').Match(str);
  if Match.Success then
    result := Trim(Match.Groups[1].Value);
end;
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: String in einer Stringliste an Trennzeichen zerlegen

  Alt 10. Mai 2019, 13:57
Dann würde ich mir doch lieber das Trim sparen und per RegEx auch nur den Wert ohne Leerzeichen holen:

CallerIDNum: *(.*)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:23 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