AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zusammenhängende Zahlen aus String ermitteln.
Thema durchsuchen
Ansicht
Themen-Optionen

Zusammenhängende Zahlen aus String ermitteln.

Offene Frage von "sega84"
Ein Thema von sega84 · begonnen am 11. Feb 2010 · letzter Beitrag vom 11. Feb 2010
Antwort Antwort
sega84

Registriert seit: 18. Sep 2006
73 Beiträge
 
Delphi XE2 Professional
 
#1

Zusammenhängende Zahlen aus String ermitteln.

  Alt 11. Feb 2010, 17:49
Hallo zusammen,
momentan bin ich damit beschäftigt einen Abgleich von MT940-Bankdateien mit einer Rechnungstabelle durchzuführen.
In der MT940-Datei gibt es eine lange Textzeile, in denen alle Informationen stehen:
- Absender der Zahlung
- Überweisungsgrund 1 & 2

Da viele Kunden aber noch zusätzliche Informationen mit in den Überweisungsgrund eintragen, kommt es vor, dass ich die Rechnung nicht in der SQL-Datenbank finden kann.

Ein Bespiel-Datensatz aus der MT940-Zahlungsdatei:
MAX MUSTERMANN99999999999991PRODUKT VERSION 123 VERGOLDET 1,5M MAX MUSTERMANN MEINE FIRMA

MAX MUSTERMANN = Uninteressant
99999999999991 = RechnungsNr
PRODUKT VERSION 123 VERGOLDET 1,5M = Zusätlicher Text des Kunden
MAX MUSTERMANN MEINE FIRMA = Uninteressant

Wenn ich nun alle Zahlen aus dem String ermitteln möchte, bekomme ich folgendes Ergebnis:
9999999999999112315
allerdings benötige ich nur
99999999999991

Alle weiteren Informationen könnte ich eventuell auch noch benötigen, um diese auch zu überprüfen.

Wie ist es nun möglich, zusammenhängende Zahlen aus einem String in eine Array / StringListe zu Packen, so dass ich folgendes Array als Beispiel bekomme:
(99999999999991; 123; 15)

So könnte ich dann jedes einzelne Element des Arrays sauber abfragen...

Vielleicht hat jemand von euch ja eine nette Funktion oder so...
Vielen Dank für eure Hilfe...
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Zusammenhängende Zahlen aus String ermitteln.

  Alt 11. Feb 2010, 18:02
Hallo sega84,

ich habe zwar keine fertige Lösung, aber du scheinst ja schon eine Teillösung zu haben.
Zitat von sega84:
Wenn ich nun alle Zahlen aus dem String ermitteln möchte, bekomme ich folgendes Ergebnis:
9999999999999112315
Nun hilft dir über die letzte Hürde vielleicht selber, in dem du dich fragst wie ein Mensch den erkennt, dass es eine zusammenhängende Zahl ist.
Der erste Schritt wäre, das eine zusammenhängende Zahl dann aufhört, wenn irgendwann ein Zeichen kommt das keine Zahl ist. Jedes mal wenn das der Fall ist, fügst du die Zahl Array hinzu und beginnst eine neue Zahl sobald du ein Zeichen findest das eine Zahl ist

Wenn du es noch verfeinern willst kannst du als zweiten Schritt noch Punkt oder Komma zulassen, wenn vorher ein Zahl war und nachher auch eine kommt. Noch weiter verfeinern kannst du es wenn du ab diesem Zeitpunkt kein DezimalSeperator mehr zulässt. Und so weiter und so weiter und so weiter

Ich denke, das sollte Dich zum gewünschten Ziel bringen.

Wie gesagt, keine fertige Lösung aber ein Denkanstoß

Greez, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: Zusammenhängende Zahlen aus String ermitteln.

  Alt 11. Feb 2010, 18:17
Hallo Sega84,

ich bezweifle ehrlich gesagt, daß die Daten einfach so hintereinander geklatscht wurden. Ist es nicht vielleicht so, das:
Code:
1) name 1..14
2) Nummer 15..28
3) Produkt 29..48
....
Dann wäre es natürlich einfach die Rechnungsnummer durch ein copy aus dem String heraus zu holen.
Oder wenn alle Sätze die gleiche Länge haben, gleich ein Record mit den richtigen Feldern darüber legen......

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

Registriert seit: 14. Sep 2006
Ort: Neukirchen-Vluyn
40 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Zusammenhängende Zahlen aus String ermitteln.

  Alt 11. Feb 2010, 19:38
Wenn dein Eingabestring immer dieses Format hat, führst du diesen RegEx aus:
/^([a-z ]*)([0-9]*)([a-z ,\.]*)([0-9]*)([a-z ,\.]*)([0-9,]*)([a-z ,\.]*)$/i Die Informationen, die du brauchst, stehen dann in Klammer 3, 5 und 7 (7 mmusst du dann das , noch entfernen).
Da ich derzeit mit Schwerpunkt PHP arbeite musst du nun nur noch den RegEx unter Delphi ausführen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:21 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