AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Nachschlagetabelle (in Resource?) mitliefern
Thema durchsuchen
Ansicht
Themen-Optionen

Nachschlagetabelle (in Resource?) mitliefern

Ein Thema von berens · begonnen am 14. Jun 2018 · letzter Beitrag vom 15. Jun 2018
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Nachschlagetabelle (in Resource?) mitliefern

  Alt 14. Jun 2018, 20:40
Datenbank: - • Version: - • Zugriff über: -
Hallo!
Da mein Programm eigentlich keinen Internetzugriff erfordert, und es je nach Kunde unterschiedlich kompliziert ist ins Internet zu kommen, würde ich auch gerne weiterhin darauf verzichten.

Für ein Feature muss ich die Längen-/Breitegrade einer beliebigen Stadt in Deutschland nachschlagen, kann das aber deshalb nicht über einen "Webservice" online tun. Ich habe hier auf meinem PC eine Excel-Tabelle, in der alle notwendigen Informationen sind (Stadtname, Längengrad, Breitengrad, ...). Das Dateiformat kann ich ja beliebig ändern (exportieren).

Frage:
Gibt es in Delphi (2010) eine Möglichkeit, die Tabelle direkt mit/in der .exe auszuliefern?

Ich denke da (grafisch gesprochen) an sowas wie das DB-Grid, in das ich einfach zur Entwicklungszeit diese komplette Tabelle hineinlade. Geht so natürlich nicht in Wirklichkeit. Oder doch irgendwie? Kann man z.B. notfalls den Inhalt von einem TAdoDataset oder so aus einer Resource laden (z.B. die Tabelle als .csv-Datei aus einer Resource?).

Was wäre eine professionelle Alternative?
Wahrscheinlich die Tabelle als eigenständige (dateibasierte) Datenbank mitliefern? Welches Format/System, das keinen großen Overhead hat? Wie über Delphi einbinden?

Vorab vielen Dank!


P.S.: Es sollte unnötig sein zu erwähnen, dass die Daten nur gelesen, aber niemals geschrieben werden sollen...
Delphi 10.4 32-Bit auf Windows 10 Pro 64-Bit, ehem. Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Nachschlagetabelle (in Resource?) mitliefern

  Alt 14. Jun 2018, 20:58
Du kannst Daten jeglicher Art als Resource einbinden.
Beim Starten diese Resource in ein Temp Ordner schreiben.
Von da wie gewohnt drauf zugreifen.
Beim beenden die temp Datei löschen.
Voila.


Habe Dein PS überlesen, sorry!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.194 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Nachschlagetabelle (in Resource?) mitliefern

  Alt 14. Jun 2018, 21:20
Warum lieferst du die Tabelle nicht gemeinsam mit deinem Programm aus? Verschlüsselt, wenn das notwendig notwendig ist.


Aber natürlich kannst du die Daten auch ins Programm einbinden. Nimm zB ein TMemo, kopiere deine XLS als CSV da hinein. Wobei ich das jetzt nicht sooo elegant fände.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: Nachschlagetabelle (in Resource?) mitliefern

  Alt 14. Jun 2018, 21:37
Daten in ein ClientDataSet schreiben, als Datei speichern, diese Datei als Resource aufnehmen.

Im Programm selber die Daten als Stream aus der Resource und per Delphi-Referenz durchsuchenTClientDataSet.LoadFromStream hat man die wieder zur Verfügung.
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Nachschlagetabelle (in Resource?) mitliefern

  Alt 14. Jun 2018, 21:41
Ich habe gerade festgestellt, dass die Tabelle Original im TSV-Format (Tab-Separiert) vorliegt.

Bevor ich jetzt mit irgendwelchen Komponenten und Datenbankformaten anfange zu handtieren:

Durch das TSV-Format kann ich die Tabelle Zeilenweise super parsen. Da die Benutzer ja nach einem Stadtnamen oder PLZ suchen, kann ich mit "for i" und "Pos()" mit schnell die notwendigen Zeilen suchen, und die verbliebenen, wenigen Kandidaten dann im Detail parsen (d.h. jeden -durch "Tab" getrennten- Wert in das passende Feld eines Records schreiben) und dann auswerten, bzw. dem Benutzer aufbereitet auflisten.

Die ~250kb Textdatei kann ich nun tatsächlich entweder direkt (z.B. in einem unsichtbaren Memo) im Formular speicher, in einer Resource, oder -wahrscheinlicher- liefere ich sie als Textdatei direkt mit dem nächsten Update aus, dann bleiben die .exen etwas schmaler, falls ich die Funktion doch später in mehreren Programmteilen benötige.

Allen Antwortern vielen Dank, Thema erfolgreich beendet.


@Schokohase: leider erst nach Schreiben meiner Antwort eben eingetroffen. Das wäre tatsächlich die wahrscheinliche Lösung, wenn die Daten ein wenig größer/komplizierter wären. Danke!
Delphi 10.4 32-Bit auf Windows 10 Pro 64-Bit, ehem. Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#6

AW: Nachschlagetabelle (in Resource?) mitliefern

  Alt 15. Jun 2018, 10:52
Direkt in die EXE/Ressource?

Du kannst praktische alles als Ressource in deine Anwendung einfügen, entweder über die IDE oder über eine *.RC (in die DPR eingebunden, kann Delphi daraus automatisch eine RES machen), bzw. eine selbstkompilierte *.RES

Und dann hast du entweder sowas wie LoadFromRessource zu Verfügung, oder LoadFromStream mit TRessourceStream dazwischen.



DFM ist zwar auch nur eine Ressource, aber sowas macht man doch nicht ... wenn schon, dann richtig.
Die DFM/Form im Formdesigner und in der laufenden Anwendung unnötig aufzublähen ist selten eine gute Idee.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jun 2018 um 10:54 Uhr)
  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 01:40 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