AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi weitergabe und Speicherung von daten
Thema durchsuchen
Ansicht
Themen-Optionen

weitergabe und Speicherung von daten

Ein Thema von blinder007 · begonnen am 22. Sep 2013 · letzter Beitrag vom 22. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#1

weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 10:59
Hallo Community,
ich will größere Informationen die Außerhalb des Programmes gelagert werden sollen und auf denen, während der Laufzeit, zuggriffen werden soll. Ich überlegte mit typisierten dateien oder mit tfilestream zu arbeiten. Nun sagte mir ein befreundeter Programmierer, es gäbe probleme bei der weitergabe zwischen 16-32 und 64bit rechner, auf grund verschiedener Datentypen. Er riet mir die Informationen in Textdateien zu speichern. Da aber der Anwender nicht auf diese Informationen zu greifen darf halte ich diese für unpraktisch, da Textdateien leicht geändert werden können. Ini-Dateien bieten mir auch nicht die nötige Sicherheit. habt ihr einen rat? Ich könnte natürlich auch eine Unit schreiben, in der ich diese informationen alle direkt speichere, das würde das Programm aber nur unnötig groß machen.
grüße
blinder007
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 12:15
"Informationen" ist aber sehr allgemein. Über welche Mengen an Daten reden wir? Muss darauf performant zugegriffen werden können?

Was ist "Anwender darf nicht darauf zugreifen"? Möchtest du dem Endnutzer deine gespeicherten Daten nicht direkt unter die Nase reiben oder muss es verschlüsselt oder zumindest obfuskiert vor ihm verborgen werden?

In Sachen "typisierte Daten" bzw. "File of XYZ": Neulich hatten wir eine interessante Diskussion darüber. Wenn du die Zeit hast kannst du ja mal lesen: http://www.delphipraxis.net/175696-d...-benutzen.html

Da geht es auch um die Technik, also auch die größer/kleiner werdenden Datentypen und Records und undurchsichtige Dateiformate die in fünf oder zehn Jahren keiner mehr versteht.


Lange Rede, kurzer Sinn: Ich bin entweder zu dumm, oder habe zu wenig Infos, um zu wissen was du genau möchtest. Wenn du sagst, dass du die Daten auch im Quelltext ablegen könntest: Dann sind es statische Daten und ändern sich nie? Beispielsweise Lookup-Tables? Wenn wir hier nicht über dutzende Megabytes reden- Warum nicht?

Ansonsten hätte ich spontan eine lokale Datenbank wie SQLite oder einfache XML-Files genommen. Aber vielleicht willst du ja auch etwas ganz anderes machen...
  Mit Zitat antworten Zitat
blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#3

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 12:30
ich werde mir den thread einmal durchlesen, kingt interessant.
ich versuche dich mal mit weiteren Informationen zu versorgen:
a) es handelt sich dabei um die Datenstruktur eines (oder dann natürlicher vielen, geplant sind ca. 30) records mit ca. 10-15 daten vom typ integer und extended.
b) Es ist möglich, aber unwahrscheinlich, dass die Daten verändert werden müssen, ab einem bestimmten Punkt müssen sie einmal in das Programm geladen werden und an einem anderen Punkt wieder gelöscht / freigegeben werden.
c) es reicht eigentlich das "bloße "nicht unter die nase reiben", - sprich mit der kenntnis über die datenstruktur und dem öffnen einer Datei im editor soll man nicht an der Datenstruktur rumfummeln können (was bei Ini oder txt ja gegeben wäre)
Frage: Ich will mir das arbeiten mit Datenbanken ersparen, habe da schlechte Erfahrungen, deswegen: würde für dateien die in xml erstellt wurden Punkt c zu treffen oder nicht?

Falls es immer noch unklarheiten gibt, bitte Fragen, ich programmiere noch nicht lange, weiß also noch nicht genau welche Informationen relevant sind
grüße
Blinder007
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 12:53
Würde für dateien die in xml erstellt wurden Punkt c zu treffen oder nicht?
Nein. XML Dateien sind entwickelt worden, um das Datenschema (also was wo steht) explizit mit den Daten zusammen zu speichern.
Einstellungen sehen dann z.B. so aus:
Code:
<?xml version="1.0" encoding="utf-8"?>
<Param xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Kappa>6.7e-6</Kappa>
  <b1>0.1</b1>
  <b2>0.6</b2>
  <Lambda>33.63</Lambda>
  <Epsilon>0.25</Epsilon>
  <Hm>2.75e5</Hm>
  <w0>13.186e-6</w0>
</Param>
Du siehst, man kann da relativ einfach dran herum fummeln. Abhilfe wäre z.B. die Datei nicht "*.xml" zu nennen, sondern eine eigene Endung oder "*.dat". Und vielleicht im Appdata-Ordner speichern, da verirren sich nicht so viele Benutzer hin.

Mit ein Grund für XML ist ja, dass die Daten wichtiger als das Programm sind. Man hatte häufiger mal "uralte Daten, aber verflucht das Programm läuft nicht mehr. Wir brauchen aber die Daten!!!"
  Mit Zitat antworten Zitat
blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#5

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 13:00
das klingt interessant, sprich ich speichere meine dateien als xml-files... werde ich mal drüber nachdenken und schauen was hier mit meiner delphi 6 so geht. beim lesen des oben geposteten threads überlegte ich jetzt doch tfilestream zu verwenden, aber da treten dann doch wohl einige Fehler auf.
Was mich dann noch interessieren würde: angenommen ich speichere die records oder klassen in einer xml-file. wie kann ich diese, in der Laufzeit, renamen und delphi zeigen, um welches format es sich handelt, um dann entsprechend damit umzugehen?
Sprich: ich ändere den Dateitypen in .eem (fiktives dateiformat, der user soll es einfach nicht erkennen können), wie kann delphi das als xml-file identifizieren?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 13:05
Eine Datei umzubenennen, damit die Inhalte nicht verändert werden, ist in etwa so schlau, wie das Schild, auf dem 'Bank' steht, mit einem selbstgeschriebenen Zettel 'keine' zu versehen.

So gut wie jeder wird die Datei nehmen, und mal mit Notepad öffnen. Ich mache das jedenfalls mit jeder mir unbekannten Datei (bzw. Notepad++).

Wie wäre es mit einer einfachen Datenbank, z.B. Firebird? Das zu verändern, dürfte nur mit FB selbst möglich sein und wenn man den Zugriff mit einem Kennwort sichert, wird es noch schwieriger. Unmöglich ist gar nichts, und insofern ist das auch keine perfekte Lösung.

Eine Frage: Darf der Anwender die Dateien nicht verändern, oder willst Du nur mitbekommen, *wenn* er sie verändert hat?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 13:13
Der XML-Inhalt ist im Endeffekt ein langer String. Du kannst die Datei ganz normal mit z.B. einem TFileStream öffnen und auslesen. Für Delphi gibt es mehrere XML-Libriaries. Ich benutze XML exzessiv für Speicherung von Konfigurationen und Interprozess-Kommunikation und bin mit dem normalen MS-XML (Klassen IXMLDocument, IXMLNode usw. aus den Units XmlIntf, XmlDoc, ...) eigentlich immer sehr gut gefahren. Ich habe gerade kein Delphi offen, aber die Klasse IXMLDocument hat mein ich bereits eine Methode LoadFromFile , da hast du es dann direkt drin, die Dateiendung ist dabei ziemlich egal.

Ob Delphi 6 MSXML schon kennt weiß ich nicht. Vielleicht solltest du die Info in dein Profil eintragen, so sieht man immer, mit welcher Version derjenige unterwegs ist.


@Furtbichler: Die Metapher sehe ich genauso. Nur bei der Häufigkeit, wie oft jemand anfängt in Dateien von Programmen zu wühlen nicht. Wir wissen nicht, was das genau für eine Software ist. Werden damit Waren hergestellt wird früher oder später jemand darin wühlen. Ist es ein Freeware oder in-house Tool für irgendeine Verwaltung oder Visualisierung, dann sicher weniger.
Ich frage mich halt wirklich, ob es denn schlimm ist, wenn jemand das verändert. Wenn er sich damit etwas zerschießt weiß er, dass er selber schuld ist.

Blöd wird die Sache erst, wenn der Kunde dann anruft "Hey, euer Kram funktioniert auf einmal nicht mehr!" obwohl er ihn selbst kaputt gemacht hat. So etwas gibt zu Genüge.


Zitat:
Eine Frage: Darf der Anwender die Dateien nicht verändern, oder willst Du nur mitbekommen, *wenn* er sie verändert hat?
Gute Idee!
  Mit Zitat antworten Zitat
blinder007

Registriert seit: 29. Mär 2013
30 Beiträge
 
#8

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 13:25
ok, dann hier weitere informationen
es handelt es sich um ein, zunächst freeware, später auch shareware, spiel.

In meinem Spiel gibt es auf einer Karte unterschiedliche Städte. Ich will zwei Dateien haben.
Datei 1: enthält die größe der Stadt, die Anzahl der Objekte und Zahlen die diese Objekte identifizierbar machen. in der zweiten datei finden sich dann die ganzen identifizierer, denen dann weitere eigenschaften zugeordnet werden können.

Der User soll nicht in der Lage sein zu erkennen, was sich wo verbirgt oder welche Eigenschaften es hat. gelegentlich soll ein Objekt in einer Stadt zerstört werden, dafür muss aber nicht zwangsläufig der Wert gelöscht werden.
Ist das Prinzip klar?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#9

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 13:30
Dann bleibt nur noch Verschlüsseln. Aber das ist auch Bockmist, weil man das mit Reverseengineering knacken kann.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

AW: weitergabe und Speicherung von daten

  Alt 22. Sep 2013, 13:33
es handelt es sich um ein, zunächst freeware, später auch shareware, spiel.
Spieler sind natürlich etwas versierter, denen könnte man auch zutrauen, einen SQLite-Editor oder einen Hex-Editor zu benutzen.
Solange das ein Singleplayerspiel ist, ist das imho aber nicht so tragisch.

An deiner Stelle würde ich mir SQLite auf jeden Fall mal anschauen; eventuell kannst du einige Sachen, die du mit den Daten vorhast, sogar in SQL erschlagen.
Datei 1: enthält die größe der Stadt, die Anzahl der Objekte und Zahlen die diese Objekte identifizierbar machen. in der zweiten datei finden sich dann die ganzen identifizierer, denen dann weitere eigenschaften zugeordnet werden können.
Das riecht doch schon ein bisschen nach relationaler Datenbank

Mit ein Grund für XML ist ja, dass die Daten wichtiger als das Programm sind. Man hatte häufiger mal "uralte Daten, aber verflucht das Programm läuft nicht mehr. Wir brauchen aber die Daten!!!"
Das ist ein wichtiger Punkt. Wenn dein Programm die Daten nur ließt, kannst du die Daten in einem beliebig bekloppten Format ausliefern, solange du die Daten in einem gut dokumentierten Format bei dir gespeichert hast.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:23 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