Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Text-datei und PLZ (https://www.delphipraxis.net/136323-text-datei-und-plz.html)

Kunoishi 28. Jun 2009 16:03


Text-datei und PLZ
 
ich habe eine textdatei "PLZ.txt" in der ist hinterlegt die Plz und der dazugehörige Ort wie "01990 Brandenburg"
nun habe ich drei edit felder für Straße Plz Ort. Ich versuche nun. zum beispiel den Ort einzugeben und er soll auf die Textdatei den ort und im anderen editfeld die dazugehörige PLZ suchen.
Wie bekomme ich das hin ?

fkerber 28. Jun 2009 16:05

Re: Text-datei und PLZ
 
Hi!

Am einfachsten würdest du die Datei in einem für dich passenden Format einlesen, das man gut weiterverarbeiten kann.
Möchtest du es mit Delphi machen?


Grüße, Frederic

DeddyH 28. Jun 2009 16:06

Re: Text-datei und PLZ
 
Die einfachste (und langsamste) Möglichkeit: die Datei durchgehen und ab der 7. Stelle der aktuellen Zeile den String mit Deiner Ortsangabe vergleichen.

Kunoishi 28. Jun 2009 16:16

Re: Text-datei und PLZ
 
ich bearbeite das ganze in delphi 5
finde aber den ansatz nicht

DeddyH 28. Jun 2009 16:23

Re: Text-datei und PLZ
 
Den habe ich Dir doch genannt.

Klaus01 28. Jun 2009 16:26

Re: Text-datei und PLZ
 
Hallo,

prinzipiell könnte es so gehen.

Delphi-Quellcode:
var
 sl: TStringList;
 plz : TStringList;
 ort : StringList;

begin
  plz := TStringList.create;
  ort := TStringList.create;
  sl:=TStringList.create;
  sl.loadFromFile(DeineTextDatei);
  for i:=0 to sl.count -1 do
    begin
      plz.add(copy(sl[i],1,5));
      ort.add(copy(sl[i],6,length(sl[i])));
    end;
  sl.free;
  plzEdit.text:=plz[ort.indexOf(ortEdit.text)];
  plz.free;
  ort.free;
end;
Grüße
Klaus

Kunoishi 28. Jun 2009 16:30

Re: Text-datei und PLZ
 
halle klaus
dit is doch ne wucht
damit habe ich doch sicherlich einen anfang für mein kleines PROBLEM.
DANKE

was würde ich nur ohne euch hier im forum machen?

DeddyH 28. Jun 2009 16:32

Re: Text-datei und PLZ
 
Oder die Datei jedesmal zeilenweise einlesen oder oder... Allerdings besteht die Problematik, dass ein Ort verschiedene PLZ haben kann und dass das so wie gesagt recht langsam ist. Allerdings ist Letzteres wieder eine Frage der Anzahl der Daten.

Kunoishi 28. Jun 2009 16:35

Re: Text-datei und PLZ
 
mmm meine daten in der Datei sind nur 160 kb groß, das dürft ja dann wohl nicht lange dauern
Oder ?

DeddyH 28. Jun 2009 16:41

Re: Text-datei und PLZ
 
Vermutlich nicht, aber das erste Problem besteht weiterhin.

Blackheart 28. Jun 2009 16:46

Re: Text-datei und PLZ
 
Wenn es nur kleine Datenmengen sind würde sich eine Ini Datei anbieten, dürfte wohl das einfachste sein. (Big Ini)

Kunoishi 28. Jun 2009 16:48

Re: Text-datei und PLZ
 
wie meinst du das?

Klaus01 28. Jun 2009 16:51

Re: Text-datei und PLZ
 
Zitat:

Zitat von Kunoishi
wie meinst du das?

Worauf beziehst Du dich?

Mehrere PLZ pro Ort ist in Städten nichts ungewöhnliches.
Es kommt sogar vor das eine Straße mehrere PLZ haben kann.

Grüße
Klaus

Kunoishi 28. Jun 2009 16:54

Re: Text-datei und PLZ
 
mmm ich habe einmal vor mich auf die PLZ oder den Ort zu beziehen

solte ich also die straße auch noch mit hinzunehmen ?

Jürgen Thomas 28. Jun 2009 17:20

Re: Text-datei und PLZ
 
Zitat:

Zitat von Kunoishi
mmm ich habe einmal vor mich auf die PLZ oder den Ort zu beziehen

solte ich also die straße auch noch mit hinzunehmen ?

Und die Hausnummern und die Postfächer und die Liste der Großempfänger wie Quelle, Deutsche Rentenversicherung usw. Beispiel: Die Berliner Straße gibt es in Berlin 8 Mal, also brauchst du zunächst den Ortsteil. Für diejenige in Pankow musst du dann unterscheiden zwischen den Hausnummern 1-13 (ungerade), 2-14 (gerade), 115-Ende (ungerade), 116-Ende (gerade) mit PLZ 13187 und den Nummern 15-113 (ungerade), 16-114 (gerade) mit PLZ 13189.

Schau doch einmal in das große gelbe Buch der Deutschen Post AG oder in die entsprechenden Daten, siehe Datafactory Postalcode

Jürgen

Blackheart 28. Jun 2009 17:22

Re: Text-datei und PLZ
 
Zitat:

Zitat von Kunoishi
wie meinst du das?

Weiß jetzt nicht wen du gemeint hast, antworte mal trotzdem drauf.
Schau dir mal dieses Ini Tutorial an ist sehr einfach beschrieben.
Da früher Ini nur Datenmengen bis 64 kb aufgenommen haben (Vieleicht ist es heut anders) kann ich Big Ini empfehlen.

Kunoishi 28. Jun 2009 17:29

Re: Text-datei und PLZ
 
jetzt wollte ich mir einen kleinen luxus in meinem programm gönnen und nun wird dit zu einem soooooooo großen problem.
na toll :-(

Delphi-Quellcode:
procedure PLZ1Click(Sender: TObject);
.
.
.

var
  sl: TStringList;
  plz: TStringList;
  Ort: TstringList;

implementation
.
.
.

procedure TSachverhaltForm.PLZ1Click(Sender: TObject);
var i:integer;
begin
  plz :=TstringList.create;
  Ort :=TStringList.create;
  sl :=TstringList.create;
  sl.LoadFromFile('PLZ.txt');
  for i:= 0 to sl.count -1 do
    begin
      plz.add(copy(sl[i],1,5));
      ort.add(copy(sl[i],6,length(sl[i])));
    end;
  sl.free
  EditTPlz.Text :=plz[ort.indexof(EditTOrt.text)];
  plz.free;
  ort.free;
end;
er gibt mir bei editTPLZ.Text :=plz....
den fehler aus Operator oder Semikolon fehlt.


warum das ?

DeddyH 28. Jun 2009 17:40

Re: Text-datei und PLZ
 
Weil in der Zeile davor ein Semikolon fehlt :mrgreen:

Kunoishi 28. Jun 2009 17:49

Re: Text-datei und PLZ
 
oh man, ick sehe den wald vor lauter bäume nicht :-( :-(

danke

Mithrandir 28. Jun 2009 19:22

Re: Text-datei und PLZ
 
Handelt es sich um die PLZ-Datei der OpenGeoDB?

Kunoishi 28. Jun 2009 22:44

Re: Text-datei und PLZ
 
nein, diese db kenne ich nicht
meine Textdatei habe ich von einer demo-cd aus dem jahre 2002 für datenbankverwaltung von java und war als textdatei hinterlegt

Mithrandir 28. Jun 2009 23:10

Re: Text-datei und PLZ
 
Hm, hier gibt es eine Datei namens "PLZ.tab":

http://fa-technik.adfc.de/code/opengeodb/

In dieser befinden sich die Daten in dem Format

Code:
#loc_id   plz   lon   lat   Ort
5078   01067   13.7210676148814   51.0600336463379   Dresden
durch Tabs getrennt. Daher kam ich dadrauf. ;)

p80286 29. Jun 2009 13:22

Re: Text-datei und PLZ
 
ähm, hallo ??

die Lösung mit den drei Stringlisten ist doch eher suboptimal
Zitat:

Zitat von Jürgen Thomas
Zitat:

Zitat von Kunoishi
mmm ich habe einmal vor mich auf die PLZ oder den Ort zu beziehen

solte ich also die straße auch noch mit hinzunehmen ?

Und die Hausnummern und die Postfächer und die Liste der Großempfänger wie Quelle, Deutsche Rentenversicherung usw. Beispiel: Die Berliner Straße gibt es in Berlin 8 Mal, also brauchst du zunächst den Ortsteil. Für diejenige in Pankow musst du dann unterscheiden zwischen den Hausnummern 1-13 (ungerade), 2-14 (gerade), 115-Ende (ungerade), 116-Ende (gerade) mit PLZ 13187 und den Nummern 15-113 (ungerade), 16-114 (gerade) mit PLZ 13189.

Schau doch einmal in das große gelbe Buch der Deutschen Post AG oder in die entsprechenden Daten, siehe Datafactory Postalcode

Jürgen

Damit ist eigentlich alles gesagt, aber zur Verdeutlichung noch einmal:
zur Postleidzahl gehört ein Ort / Kunde, (ein Ortsteil,) eine Straße ggf. mit Erweiterung durch Hausnummern.
Das sollte man tunlichst nicht in zwei,drei... Stringlisten auseinander reißen!
Für die ewiggestrigen gibt es da Records, und für die modernen Objekte.
Und die DB-Fraktion hat dann gleich ein embedded..... in der Hinterhand.

Das benutzen von Stringlisten ist etwa so empfehlenswert wie das Benutzen von "goto"s. Natürlich geht's, aber ist's auch sinnvoll?

Gruß
K-H

Kunoishi 29. Jun 2009 22:10

Re: Text-datei und PLZ
 
ein hallo
wie kann ich dann aber mein problem lösen?
habt ihr einen vorschlag?

Mithrandir 29. Jun 2009 22:12

Re: Text-datei und PLZ
 
:gruebel:

Wieso, war das nicht schon gelöst?

Kunoishi 29. Jun 2009 22:22

Re: Text-datei und PLZ
 
nein ihr hatte mir doch wenn ich mich an gesternabend erinnere (war schon spät) ja
gesagt das ich auch die straßen und hausnummern berücksichtigen soll

Mithrandir 29. Jun 2009 22:35

Re: Text-datei und PLZ
 
Du musst aufpassen, dass das kein Overkill wird. Du kannst dir natürlich mit den Daten z.B. aus dem OpenStreetMap eine Liste mit Straßen zusammenbasteln, aber das ist ein riiiiesiger Aufwand.

(<= weiß wovon er da spricht)

alternativ könntest du uns auch einfach verraten, was du da basteln willst. Und dann kann man immer noch gucken, ob du so eine riesen Liste brauchst.

Kunoishi 29. Jun 2009 22:49

Re: Text-datei und PLZ
 
ich habe eine eingabemaske für strasse, plz, Ort
und wolte jetzt versuchen das wenn ich die plz habe aber den ort nicht weis, dass er mir gleich den ort als vorschlag im entsprechenden editfeld ausgibt.
das ganze in umgekerter reihenfolge für die PLZ.

Mithrandir 29. Jun 2009 23:10

Re: Text-datei und PLZ
 
Dann wäre für dich vielleicht auch die Verwendung eines TStringDictionary interessant. So würde ich zwecks der Eindeutigkeit die Postleitzahlen als Index nehmen und den Ort als Wert. Eine schnellere Lösung wirst du wohl ohne großen Aufwand nicht finden, und eine DB ist definitiv overkill.

Wenn du die Datei mit den Postleitzahlen zippen und hochladen könntest, würde ich mich bereiterklären, dir ein kommentiertes Beispiel zu stricken.

Wenn du allerdings noch die Straßennamen dazunehmen willst, dann musst du dich nach einer entsprechenden Liste umsehen oder sie mit den OSM-Daten selbst erstellen. So eine Liste ist allerdings schnell mal mehrere MB groß, und dafür brauchst du dann tatsächlich eine Datenbank.

Kunoishi 29. Jun 2009 23:18

Re: Text-datei und PLZ
 
wie meinst du das mit dem TStringDictionary
ich gebe zu bin nur ab und zu mal mit delphi in arbeit
und würde mich über hilfe diesbezüglich freuen

Mithrandir 29. Jun 2009 23:33

Re: Text-datei und PLZ
 
alzaimar hat hier sowas veröffentlicht. Das als Basis, und man kann deine PLZ <=> Stadt - Kombi in annehmbarer Zeit durchsuchen. ;)

Jürgen Thomas 29. Jun 2009 23:33

Re: Text-datei und PLZ
 
Zitat:

Zitat von Daniel G
Eine schnellere Lösung wirst du wohl ohne großen Aufwand nicht finden, und eine DB ist definitiv overkill....

Wenn du allerdings noch die Straßennamen dazunehmen willst, dann musst du dich nach einer entsprechenden Liste umsehen oder sie mit den OSM-Daten selbst erstellen. So eine Liste ist allerdings schnell mal mehrere MB groß, und dafür brauchst du dann tatsächlich eine Datenbank.

So ist es. Eine richtige Lösung mit allen Daten braucht eine richtige Datenbank.

Ich verweise nochmals auf Datafactory Postalcode, das sind die offiziellen Postdaten als Grundlage für eine Datenbank. Es sind etwa 150 MB für etwa 8 Tabellen; es handelt sich allerdings um ein seltsames Datenformat ohne jeden Index, sodass man sich die Struktur für ein relationales DBMS erst noch selbst stricken muss und dann die Daten importieren muss.

Danach kann man sich auch eine Liste für eine ComboBox holen, die z.B. zur PLZ 21376 alle vorhandenen Ortsnamen anzeigen kann. Aber das ist nur ein Teil der ganzen Daten.

Gruß Jürgen

Mithrandir 29. Jun 2009 23:36

Re: Text-datei und PLZ
 
Sollte es sich aber um keine kommerzielle Anwendung handeln, dann kann man sich lieber mit den OSM-Daten rumschlagen. Kostet zwar Manpower, aber keine Euronen. ;)

P.S.: Deine Links führen dauernd auf die Startseite der Post. Ist bestimmt nicht so beabsichtigt, oder? :stupid:

Jürgen Thomas 30. Jun 2009 07:47

Re: Text-datei und PLZ
 
Zitat:

Zitat von Daniel G
P.S.: Deine Links führen dauernd auf die Startseite der Post. Ist bestimmt nicht so beabsichtigt, oder? :stupid:

Nein, das war nicht beabsichtigt. In der Link-Adresse war ein '&' durch '&amp;' ersetzt (vermutlich durch falsches Kopieren), sodass das Ziel nicht angetroffen wurde. Ich habe es jetzt korrigiert; jetzt landet man direkt auf der richtigen Seite. Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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