Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi PLZ und Bundesland in DLL hinterlegt (https://www.delphipraxis.net/139434-plz-und-bundesland-dll-hinterlegt.html)

Kunoishi 28. Aug 2009 19:15


PLZ und Bundesland in DLL hinterlegt
 
Ich habe hier mal eine neue Frage

Meine Idee ist es die PLZ und dazugehöriges Bundesland in einer bzw. zwei DLL’s zu hinterlegen (plz.dll, bund.dll) dazu habe ich in jeder dll eine ComboBox mit den Postleitzahlen und in der anderen dll das gleiche mit den Bundesländern gemacht.
Nun wollte ich in meinem Projekt zwei Editfelder haben wo ich die PLZ als Beispiel eingebe und er aus der bund.dll mir dann das dazugehörige Bundesland holt und in dem anderen Editfeld aus meinem Projekt dort übergibt.

Frage stellt sich nur wie ich in dem Projekt die Dll’s anspreche damit diese den Wert in das jeweilige Editfeld übergeben.
Und wie schaffe ich es, dass er die PLZ den Bundesländern richtig zuordnet wenn ich diese getrennt in den jeweiligen Dll’s lasse.

Grundidee war:
Delphi-Quellcode:
library Formdll;

uses
  dialogs,
  sysutils,
  PLZ in 'PLZ.pas' {PLZ},
  Bundesland in 'Bundesland.pas' {Bundesland};

procedure Fensteranzeigen;stdcall;
begin
  PLZ1:= TPLZ.create(nil);
  try
    PLZ1.showmodal;
  finally
    Plz1.Release; // .free;
  end
end;

procedure NewExit;
begin
  showMessage('Exitprozedur der DLL');
  { DLL wird entladen }
end;

exports
       PLZ.
       Bundesland;

begin
   AddExitProc(NewExit);
   showmessage('DLL wird geladen ...');
end.
und dann die PLZ und die Bundesland
Delphi-Quellcode:
unit Bundesland;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  TBundesland = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Bundesland1: TBundesland;

implementation

{$R *.DFM}

procedure TBundesland.Button1Click(Sender: TObject);
begin
  close
end;

end.
Delphi-Quellcode:
unit PLZ;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  TPLZ = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  PLZ1: TPLZ;

implementation

{$R *.DFM}

procedure TPLZ.Button1Click(Sender: TObject);
begin
  close
end;

end.
ist der weg richtig oder ändet das wieder bevor es begonnen hat :pale:

Progman 28. Aug 2009 19:39

Re: PLZ und Bundesland in DLL hinterlegt
 
PLZ und Bundesländer lassen sich nicht so einfach zuordnen, da die PLZ-Bereiche nicht mit den Grenzen der Bundesländer übereinstimmen. Beisp. 9xxxx hast du in Thüringen und Bayern.
Besser wäre, zu jeder PLZ ein Kürzel des Bundeslandes speichern, wenn eine Zuordnung möglich sein soll. Und ob da eine DLL die optimale Lösung ist? Eine kleine Datenbanktabelle, XML-Datei oder zur Not sogar eine Ini-Datei könnten die Daten aufnehmen.
Kommt aber auch darauf an, was du später damit machen willst ;)

Kunoishi 28. Aug 2009 19:43

Re: PLZ und Bundesland in DLL hinterlegt
 
Das mit der Ini-Datei habe ich schon durch. Der Nachteil war darin, dass die Daten einfach geändert werden konnten.
Das andere Problem mit den überregionalen lasse ich erst mal ausser acht.

Kunoishi 28. Aug 2009 19:45

Re: PLZ und Bundesland in DLL hinterlegt
 
ach ja und ich wollte mich mal mit den Strings auseinander setzen, aus diesem Grund wollte ich keine Datenbank oder XML einsetzen
sondern nur reine Strings

jfheins 28. Aug 2009 19:52

Re: PLZ und Bundesland in DLL hinterlegt
 
Zitat:

Zitat von Kunoishi
Das mit der Ini-Datei habe ich schon durch. Der Nachteil war darin, dass die Daten einfach geändert werden konnten.
...

Ähhh .... was ist daran ein Problem?

Stell dir vor, eine PLZ ändert sich. So kann man als User drangehen ... hmmm - mal gucken vielleicht kann man das mit einem Texteditor ändern. Ah ja super, da ist ne Textdatei, suchen ersetzen, bingo.

Mach doch einfach so eine Datei:
Zitat:

12345 MVP,NDS Frankfut am Main
PLZ Bundesland1[,Bundesland2] Stadtname
Da haste auch mit Strings zu tun und es ist nicht unnötig kompliziert ;)

himitsu 28. Aug 2009 19:56

Re: PLZ und Bundesland in DLL hinterlegt
 
das hättest du jetzt aber auch an den vorherigen Post noch draneditieren können!

22113 - Hamburg (Hamburg)
22113 - Oststeinbek (Schleswig Holstein)

und ich weiß nicht was Strings mit DLLs, INIs und XMLs zu tun oder nicht zu tun haben sollen.

PS: String und DLL vertragen sich nicht, wegen der getrennten Speichermanager!

Kunoishi 28. Aug 2009 20:00

Re: PLZ und Bundesland in DLL hinterlegt
 
ich wollte halt feste werte in der Dll hinterlegen die ich dann von dort abrufen kann
das müßte doch gehen abgesehen von den eigenheiten des PLZ-Verseichnisses mit dem Straßenverzeichnis.

himitsu 28. Aug 2009 20:08

Re: PLZ und Bundesland in DLL hinterlegt
 
PChar und getrennte Speicherverwaltung ... kennt man z.B. von der WinAPI

WideString (OleString) ... bekannt von Vielem, was mit OLE zu tun hat

oder gemeinsame Speicherverwaltung ... genannt Hier im Forum suchenShareMem/Bei Google suchenShareMem



oder man verwendet die DLL nur als Daten/Resource-DLL ... also die Strings als Resource verwendet (macht Windows auch oftmals so)

Kunoishi 28. Aug 2009 20:12

Re: PLZ und Bundesland in DLL hinterlegt
 
was ist der Vorteil bz. der Nachteil der getrennten Speicherverwaltung / gemeinsammen Speicherverwaltung :gruebel:

sx2008 28. Aug 2009 20:17

Re: PLZ und Bundesland in DLL hinterlegt
 
Mit einem Konstanten-Array kein Problem:
Delphi-Quellcode:
const
PLZarray : array[0..2][0..1] of string = (
('10111', 'Berlin'),
('70132', 'Stuttgart'),
('87902', 'München')
);

Jürgen Thomas 29. Aug 2009 08:54

Re: PLZ und Bundesland in DLL hinterlegt
 
Dies ist ein wesentlicher Hinweis darauf, dass es keine unmittelbare Beziehung gibt für das, was du willst:
Zitat:

Zitat von himitsu
22113 - Hamburg (Hamburg)
22113 - Oststeinbek (Schleswig Holstein)

Die einzige vernünftige Lösung wäre eine Liste mit entsprechenden doppelten Einträgen der PLZ:
Code:
PLZ - Ort
Für die Orte gibt es die Kreis-Gemeinde-Schlüssel des Statistischen Bundesamtes, die auch Bestandteil der Postdaten sind. Siehe auch Textdatei und PLZ.

Jürgen

Kunoishi 29. Aug 2009 13:52

Re: PLZ und Bundesland in DLL hinterlegt
 
das mit dem PLZ bzw. Gemeindeschlüsseln ist für mich ja erstmal zweitrangig.
ich versuche mich erst einmal durch die Dll-Programmierung in der Grundidee.
Hierzu wollte ich den oder die werte erst mal in bzw. aus meinen Projekt aufrufen
und dann abfragen. ich wollte erst mal einen schritt machen.

Der.Kaktus 29. Aug 2009 14:29

Re: PLZ und Bundesland in DLL hinterlegt
 
Zitat:

Zitat von Kunoishi
das mit dem PLZ bzw. Gemeindeschlüsseln ist für mich ja erstmal zweitrangig.
ich versuche mich erst einmal durch die Dll-Programmierung in der Grundidee.
Hierzu wollte ich den oder die werte erst mal in bzw. aus meinen Projekt aufrufen
und dann abfragen. ich wollte erst mal einen schritt machen.

ich hab son Programm mal Dienstlich geschrieben..Postleitzahlen/Gemeindeschluessel..aus DP-CD Rohdaten..alles inner DB gespeichert..geht am Besten!!
[/Edit] Rechtschreibfehler[Edit]

Jürgen Thomas 29. Aug 2009 21:03

Re: PLZ und Bundesland in DLL hinterlegt
 
Zitat:

Zitat von Kunoishi
das mit dem PLZ bzw. Gemeindeschlüsseln ist für mich ja erstmal zweitrangig.

Sorry, ich war nicht ausführlich genug: Die Kreis-Gemeinde-Schlüssel sind 8 Ziffern; die ersten beiden stehen für das Bundesland, das gehört deshalb genau zur Antwort auf deine Frage. Jürgen

generic 30. Aug 2009 07:40

Re: PLZ und Bundesland in DLL hinterlegt
 
Für die legale Beschaffung der Daten könntest du übrigens das hier verwenden:
http://opengeodb.sourceforge.net/


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz