AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Strassenname, Hausnummer und Zusatz trennen!?
Thema durchsuchen
Ansicht
Themen-Optionen

Strassenname, Hausnummer und Zusatz trennen!?

Ein Thema von pumpe · begonnen am 1. Aug 2006 · letzter Beitrag vom 3. Jun 2009
Antwort Antwort
Seite 2 von 3     12 3      
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 10:58
Hallo,

hier ist noch ein Thread der sich mit dem gleichen Thema beschäftigt hat.
http://www.delphipraxis.net/internal...=strassen+haus

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
pumpe

Registriert seit: 30. Mär 2006
Ort: Neubrandenburg
8 Beiträge
 
#12

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 11:00
Oha ja, da beneide ich dich nicht. Ich habe zum Glück nur 2600 zu konvertieren das kann ich zur Not noch mal mit dem Auge überfliegen. Aber das mit den verschiedenen Schreibweisen hab ich auch schon beobachtet, aber wäre ja langweillig wenn alle User gleich wären.
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#13

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 11:07
Hi nochmals,

falls es um Adressen geht, wo Ware hin versendet werden soll, gibt es noch einige Dinge mehr zu beachten:

* Lieferadresse kann von Postadresse (da, wohin die Rechnung gesendet wird) unterschiedlich sein
* Lieferadresse darf nie ein Postfach sein
* Es gibt auch Kostenstellenbelieferungen - dann muß die Kostenstelle (oder mehrere) mit der Lieferadresse verknüpft werden
* Es gibt auch Arbeitsplatzbelieferung ("Delivery at Work") - dann muß noch zusätzlich z.B.

Firma Mustermann
Herr Mustermann
Werksgelände 3
Haus 18
5. Stock
Zimmer 1
Musterstraße 1
12345 Musterstadt

mit eingeplant werden (also Haus, Werk, Zimmer etc.).

* In seltenen Fällen gibt es sogar mehrere, unterschiedliche Lieferadressen

Wenn Du wirklich professionelle Hilfe brauchst:
Omikron AdressCenter

Und zum suchen empfehle ich FactFinder von der gleichen Firma.
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#14

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 11:12
Es ging doch nur darum einen String richtig zu teilen, oder?

Könntest du vielleicht mal 3-4 Datensätze (Straße, Hausnummer, Zusatz) hier posten, also mit veränderten Daten natürlich. Vielleicht steht da ja ein Komma oder sowas. Ansonsten artet das hier in Spekulatius aus.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
pumpe

Registriert seit: 30. Mär 2006
Ort: Neubrandenburg
8 Beiträge
 
#15

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 11:19
Feld:Strasse

Mühlfeldweg 4
Am Bach 16a
Brunnwiese 18 b
Wasserburgr Str. 14
Chiemseestr. 23
Th.-Körner-Str3
Kirchenstr.17
Angererstr. 20
Lebenau6
Pestalozzistr. 2
Wolfsberg 44
Hauptstr. 26
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#16

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 11:20
Zitat von freak4fun:
Es ging doch nur darum einen String richtig zu teilen, oder?
Korrekt - um ihn aber richtig zu teilen, muß man auch wissen, wie geteilt wird (nicht nur technisch, sondern auch syntaktisch).

"Normale" Postadressen sind was anderes wie Lieferadressen...
Catbytes
  Mit Zitat antworten Zitat
moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#17

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 11:51
Zitat von Catbytes:
Hi nochmals,
* Lieferadresse darf nie ein Postfach sein
Das kann ich so nicht nachvollziehen, da wir täglich sehr viel an Postfächer respektive Packstation verschicken, wenn es sich um Pakete handelt - Voraussetzung ist eine vorab Zahlung (Kreditkarte / Vorkasse / etc.). Einzige Einschränkung wäre, dass ein solcher Versand nur mit der Deutschen Post (DHL, was im Grunde das gleiche ist) möglich ist, da GLS / UPS / TNT / etc. diese nicht an solche ausliefern können, weil es sich um ein "Feature" der DP / DHL handelt.

Bis dann.
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#18

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 11:57
Zitat von moonwhaler:
Zitat von Catbytes:
Hi nochmals,
* Lieferadresse darf nie ein Postfach sein
Das kann ich so nicht nachvollziehen
OK - wir liefern per GLS aus. Wie es mit anderen Versendern ist, weiß ich nicht. Es ist aber ungewöhnlich, z.B. ein 3x3 Meter Paket an ein Postfach zu senden

Aber ich glaube wir werden langsam OT
Catbytes
  Mit Zitat antworten Zitat
moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#19

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 1. Aug 2006, 12:23
Zitat von Catbytes:
Zitat von moonwhaler:
Zitat von Catbytes:
Hi nochmals,
* Lieferadresse darf nie ein Postfach sein
Das kann ich so nicht nachvollziehen
Es ist aber ungewöhnlich, z.B. ein 3x3 Meter Paket an ein Postfach zu senden
Nein, diese werden dann per DHL an Packstation verschickt - wobei 3x3 Meter im Grunde fast schon Speditionskandidaten sind.

Zitat von Catbytes:
Aber ich glaube wir werden langsam OT
Ja, fürchte ich auch.
  Mit Zitat antworten Zitat
Piethan

Registriert seit: 2. Jun 2008
Ort: Köln
43 Beiträge
 
Delphi XE Architect
 
#20

Re: Strassenname, Hausnummer und Zusatz trennen!?

  Alt 3. Jun 2009, 16:45
Hallo Jürgen Thomas,

Danke für deine Prozedure. Ich habe diese für mein Programm in eine Funktion gepackt und mit
einen Rückgabetypen TAdresse = record versehen.


LG
Dirk

Delphi-Quellcode:
{
Diese Unit lehnt sich an den Beitrag von Jürgen Thomas an. Ich habe
diese Funktion eigentlich nur um einen eigenen Rückgabetypen
TAdresse erweitert und in eine eigene Unit gepackt. Daher
Danke an Jürgen Thomas.

Quelle : [url]http://www.delphipraxis.net/topic88990,0,asc,0.html[/url]

Dirk Piethan
03.06.2009
}



unit minitools;
interface

uses SysUtils;


type TAdresse = record
  STRASSE : STRING;
  HAUSNUMMER : INTEGER;
  ZUSATZ : STRING;
  POSTFACH : STRING;
end;

function Strasse_to_Details( sQuelle: string): TAdresse;

implementation
function Strasse_to_Details( sQuelle: string): TAdresse;
var
c0: char;
s0, s1, s2: string; i0, iNrLaenge: integer;
bNummer: boolean;
sStrasse: string;
iNr: integer;
sZusatz: string;
sPostfach: string;
begin
  sStrasse := '';
  sZusatz := '';
  sPostfach := '';
  iNr := 0;
  // um unterschiedliche Schreibweisen abzufangen
  s0 := AnsiLowerCase(sQuelle);
  // Postfach herausholen
  s1 := Copy( s0, 1, 8);
  s2 := Copy( s0, 1, 2);
  if ( (s1 = 'postfach') or (s2 = 'pf') ) then
  begin
    // Startposition der Nummer suchen
    i0 := 0;
    repeat
      Inc(i0);
    until s0[i0] in ['0'..'9'];
    // beim nächsten Befehl mache ich es mir einfach: max. 6 Ziffern + 2 Leerzeichen
    sPostfach := Copy(s0, i0, 8);
  end
  else begin
    // jetzt fehlt die Prüfung, ob überhaupt eine Hausnummer enthalten ist
    // oder in den o.g. Fällen 3 und 5 fehlt
    // endet die Quelle mit einer Ziffer?
    i0 := Length(s0);
    bNummer := s0[i0] in ['0'..'9'];
    // nein: Zusatz herausholen
    if (not bNummer) then
    begin
      repeat
        Dec(i0);
      until s0[i0] in ['0'..'9'];
      // bei der Länge des Zusatzes mache ich es mir einfach; aber es könnte auch
      // Situationen geben wie " a Wohnung 03-44", aber das hängt auch davon ab,
      // was die Ziel-Datenbank vorsieht
      // [/edit]muss vom Original genommen werden
      sZusatz := Copy(sQuelle, i0+1, 15);
    end;
    // jetzt steht i0 auf der letzten Ziffer der Hausnummer
    iNrLaenge := 0;
    repeat
      Dec(i0);
      Inc(iNrLaenge);
    until not (s0[i0] in ['0'..'9']);
    // StrToInt führt z.B. bei leerem String zu Exception
    try
      iNr := StrToInt( Copy(s0, i0+1, iNrLaenge));
    except
      iNr := 0;
    end;
    // Rest ist Straße
    // [/edit]muss vom Original genommen werden
    sStrasse := Copy(sQuelle,1,i0);
    Result.STRASSE:=sStrasse;
    Result.HAUSNUMMER:=iNr;
    Result.ZUSATZ:=sZusatz;
    Result.POSTFACH:=sPostfach;
  end;
end;
end.
Angehängte Dateien
Dateityp: pas minitools_866.pas (2,5 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 20:05 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