Wenn sicher gestellt ist, dass die Hausnummer immer dort steht, muss man
nur den String von vorne nach hinten nach einer Ziffer durchsuchen.
Das folgende Leerzeichen markiert die Postleitzahl und das
darauffolgende den Ort.
Problematisch dürfte es sein, wenn dei Hausnummer "2 a" geschrieben
wird...
Also wieder nach einer Zahl suchen bzw. den Strinteil bis zur nächsten
Zahl als Hausnummer verwenden.
Nächstes Problem ergibt sich bei "D-51674"...
Wenn man aber im Vorfeld solche Schreibweisen vermeidet, ist das
Zerlegen kein Problem.
Sowas kann man sogar mit Excel machen.
Such mal nach "Regulären Ausdrücken" oder "Regular Expressions" oder
kurz "regex". Wenn Du Dein Problem, sprich die Aufteilung der Zeile, in
solchen Ausdrücken darstellen kannst, kannst Du das mit jeder Sprache
machen die eine Bibliothek dafür hat. (Mein Tipp wäre Perl)
Wobei ich mir relativ sicher bin das das geht. Du kannst die PLZ als 5
Ziffern oder ein D-5 Ziffern sehen. Und rechts davon ist die Stadt.
Links kannst Du das auch an der Zahl trennen. Alles ab der 1. Ziffer ist
die Hausnummer, links davon ist der Straßenname.
Hallo,
du hast das Problem, dass das Trennzeichen (Leerzeichen) nicht nur zur
Trennung der einzelnen Abschnitte sondern auch in diesen verwendet wird.
Trotzdem würde ich eine Zeile erstmal in Blöcke zerlegen, die von
Leerzeichen getrennt werden. Wenn du dann 4 Blöcke erhälst, wie z.B. bei
Birkenweg 13 51491 Overath
dann musst du es nur noch zuordnen und bist fertig. Dazu musst du dir
aber sicher sein, dass immer alle Felder ausgefüllt sind und du keine
fehlenden Einträge wie z.B. sowas hast
Viersener Str. 122 50733
Bei 5 Blöcken kannst du dann z.B. überprüfen, ob der vorletzte Block
eine 5-stellige Zahl ist, damit du die PLZ hast, dann weißt du auch
schon, das der letzte Block der Ort ist. Wenn weiter der Block vor der
PLZ eine Zahl ist, dann ist das die Hausnummer und du musst nur noch die
ersten beiden Blöcke zu der Straße zusammenfassen, weil da das
zusätzliche Leerzeichen, das die Aufteilung verursacht hat steckt. So
müsstest du dann alle möglichen Sonderfälle abhandeln.
Unter Umständen ist es auch gut, alle Standardeinträge, die 4 Blöcke
ergeben umzuwandeln und alle anderen in eine neue Datei zu schreiben, um
sie sich erstmal gesondert anzusehen. Je nach Menge der Ausreißer geht
es dann sogar schneller, die einfach von Hand einzusortieren, wenn das
z.B. nur 20 Stück sind.
Schreiben kannst du das mit jeder Sprache, die Strings in Zeichen
aufteilen kann, was quasi jede Sprache kann.
Gruß Kai
STK500-Besitzer schrieb:> Wenn sicher gestellt ist, dass die Hausnummer immer dort steht, muss man> nur den String von vorne nach hinten nach einer Ziffer durchsuchen.
und wenn die Straße "Straße 16" heißt?
Vlad Tepesch schrieb:> und wenn die Straße "Straße 16" heißt?
"Straße 16" klingt konstruiert, aber solch eine Straße gibt es wirklich
bei mir in der Nähe:
"an den dreißig Morgen" [z.B. Hausnummer 99]
und wenn dann jemand das so erfasst:
"an den 30 Morgen 99"
dann wird das etwas schwer(er) differenzierbar.
Ist halt die Frage, wie oft das vorkommt, und was man generell mit
"fehlerhaften" Datensätzen macht.
Da man solche Daten sowieso nur einmal übernimmt (du wirst dieses
Fileformat ja doch wohl hoffentlich nicht als dein Arbeitsformat
nehmen!) wird man sowieso bei nicht plausiblen Adressen einen
Benutzereingriff vorsehen müssen.
Und wenn irgendwie möglich, würde ich den Datenlieferanten dazu nötigen,
Trennzeichen zwischen die "Felder" einzubauen. Da scheint es sich um
einen Anfänger zu handeln, der noch nie das Problem hatte, Daten die er
auf ein File geschrieben hat auch wieder einlesen zu müssen. Muss man
alles lernen, aber wenn man ihm das Problem nicht schildert, lernt er es
nie, sondern ist auch noch stolz auf den Bock, den er da geschossen hat.
Am besten gar nicht aufteilen, einfach als langes Feld lassen und das am
Ende genau so auf den Briefumschlag drucken, es gibt soviele komische
Adressen mit Zusätzen etc. Gleiches gilt für Namen, in längst nicht
allen Kulturkreisen sind Namen nach "Vorname Nachname" aufgebaut...
Dr. Sommer schrieb:> Am besten gar nicht aufteilen, einfach als langes Feld lassen und das am> Ende genau so auf den Briefumschlag drucken,
damit ist dann Ärger mit der Post vorprogrammiert.
Es gibt DIN Normen, wie Adressangaben auf Briefsendungen auszusehen
haben.
Von einem Programm sollte man doch erwarten, dass es diese einhält,
zumal die so schwer dann auch wieder nicht umzusetzen sind.
> es gibt soviele komische> Adressen mit Zusätzen etc. Gleiches gilt für Namen, in längst nicht> allen Kulturkreisen sind Namen nach "Vorname Nachname" aufgebaut...
Genau deswegen sind solche Dinge in der Ausgabe konfigurierbar. Schon
seit Jahrzehnten.
Karl Heinz Buchegger schrieb:> Genau deswegen sind solche Dinge in der Ausgabe konfigurierbar. Schon> seit Jahrzehnten.
Es ist eher ein Problem der Ein-Gabe & Speicherung, wenn das Programm 2
Felder verlangt, der Name aber nur einteilig ist, oder dreiteilig... Die
einzig sinnvolle Universal-Lösung ist ein einfaches großes Textfeld.
Karl Heinz Buchegger schrieb:> damit ist dann Ärger mit der Post vorprogrammiert.
Na die wissen doch am Besten mit Adressen umzugehen.
> Es gibt DIN Normen, wie Adressangaben auf Briefsendungen auszusehen> haben.
Dann möge man die Adresse in Post-kompatibler Form ins Programm
eingeben, in einem Textfeld.
>Die>einzig sinnvolle Universal-Lösung ist ein einfaches großes Textfeld.
und genau deshalb entstehen dann solche "Probleme" wie der TO hat..
also "sinnvoll" ist wohl anders..
Karl Heinz Buchegger schrieb:> Und wenn irgendwie möglich, würde ich den Datenlieferanten dazu nötigen,> Trennzeichen zwischen die "Felder" einzubauen.
Das ist in vielen Fällen aber nicht möglich. Ich erinnere mich auch noch
an einen Kunden, dessen Warenwirtschaftsdaten, insbesondere Kunden und
Lieferanten, auf ein neues System übertragen werden mussten. Die
einfachste Methode war, mit einem RS232-Sniffer den Datenaustausch
zwischen Rechner und Drucker mitzulauschen. Es war erstaunlich einfach,
solche Informationen wie z.B. Titelzeile, Seitenvorschub usw.
herauszufiltern.
Der einzige Haken war bloß, dass bei jedem Datenexport Bäume getötet
wurden, da der Rechner die Rückmeldungen vom Drucker auswertete und
"leeres Drucken" nicht möglich war. Bei noch größeren Datenbeständen
hätte sich aber irgendwann gelohnt, einen Druckeremulator zu bauen, aber
das wäre hier nicht ökonomisch gewesen.
Dr. Sommer schrieb:> Karl Heinz Buchegger schrieb:>> Genau deswegen sind solche Dinge in der Ausgabe konfigurierbar. Schon>> seit Jahrzehnten.> Es ist eher ein Problem der Ein-Gabe & Speicherung, wenn das Programm 2> Felder verlangt, der Name aber nur einteilig ist, oder dreiteilig... Die> einzig sinnvolle Universal-Lösung ist ein einfaches großes Textfeld.
Findige Sekretärinnen finden da eine Lösung.
Sie lassen ein Textfeld frei, bzw. geben in das andere den Teil ein, den
sie für den kompletten Vornamen halten. Kein Mensch sagt, dass das nur 1
Wort sein darf.
> Dann möge man die Adresse in Post-kompatibler Form ins Programm> eingeben, in einem Textfeld.
Das ist doch Quatsch.
Spätestens dann, wenn dein Kunde auch mal ein paar statistische
Auswertungen haben will, wie regionale Verteilung etc. dann hast du ein
enormes Problem.
Mit Staat, Land, PLZ, Ort, Strasse, Hausnummer und eventuell einem
Zusatz für Geschoss/Stiege/WOhnungsnummer kann man so gut wie alles
abdecken.
Je besser du das schon bei der Eingabe aufschlüsseln lässt, desto
einfacher wird die Sache. Aus Einzelteilen eine Adresse zusammenzusetzen
ist trivial. Aber die Umkehrung ist es nicht.
Und beim Namen ist es genau dasselbe. Vorname und Nachnahme trennen!
Wenn, wie in den USA gerne gemacht, ein sog. Middle-Initial üblich ist,
dann lässt man sich auch den eingeben. Genauso extra Felder für Anrede
und Titel.
Deine 'einzige sinnvolle Universallösung' hingegen ist eine 100% sichere
Bank für Probleme. Probleme, die der Programmierer ausbaden muss.
Andreas Schweigstill schrieb:> Karl Heinz Buchegger schrieb:>> Und wenn irgendwie möglich, würde ich den Datenlieferanten dazu nötigen,>> Trennzeichen zwischen die "Felder" einzubauen.>> Das ist in vielen Fällen aber nicht möglich.
Es kommt natürlich vor, dass ein SW-Hersteller nicht mehr existiert oder
nicht Willens ist.
> Ich erinnere mich auch noch> an einen Kunden, dessen Warenwirtschaftsdaten, insbesondere Kunden und> Lieferanten, auf ein neues System übertragen werden mussten. Die> einfachste Methode war, mit einem RS232-Sniffer den Datenaustausch> zwischen Rechner und Drucker mitzulauschen. Es war erstaunlich einfach,> solche Informationen wie z.B. Titelzeile, Seitenvorschub usw.> herauszufiltern.
Du musst aber auch zugeben, dass das schon vor langer Zeit war, als
Datenexport noch als etwas Böses angesehen wurde, das man am besten
ignoriert :-)
Karl Heinz Buchegger schrieb:> Es kommt natürlich vor, dass ein SW-Hersteller nicht mehr existiert oder> nicht Willens ist.
Der Softwarehersteller wäre bereit gewesen, für einen deutlich
sechsstelligen Betrag eine Portierung der Software auf eine damals
(Mitte der neunziger Jahre) aktuelle Plattform durchzuführen. Mir ist
nicht bekannt, wie er den Datenexport durchgeführt hätte, aber er konnte
definitiv noch (horrend teuren) Support für die Kienzle-Anlage aus den
70er oder sehr frühen achtziger Jahren leisten. Vermutlich hatte er
selbst noch eine Anlage am laufen.
> Du musst aber auch zugeben, dass das schon vor langer Zeit war, als> Datenexport noch als etwas Böses angesehen wurde, das man am besten> ignoriert :-)
Damals war Datenexport nicht böse, aber zur Zeit der Anschaffung der
Anlage schon. Sicherlich hätten wir auch versuchen können, die Daten per
Diskette zu extrahieren, was jedoch daran scheiterte, dass wir kein
8-Zoll-Diskettenlaufwerk und passende Software hatten, um das
proprietäre Datenformat der Kienzle-Anlage zu importieren.
Außerdem erfüllten die Listendrucke der alten Software exakt unsere
Anforderungen: festes Format, Feldtrennung mit Tabulatorzeichen,
FF-Zeichen zu Beginn jeder Seite und damit leicht filterbar.
Andreas Schweigstill schrieb:> Außerdem erfüllten die Listendrucke der alten Software exakt unsere> Anforderungen:
Bis vor einiger Zeit wurde in ganzseitigen Anzeigen eine Software für
genau dafür angeboten: die Erfassung von Daten, die nur als Listendruck
vorliegen, der Name fällt mir aber im Moment nicht ein. Es scheint einen
grossen Bedarf dafür gegeben zu haben.
Gruss Reinhard