![]() |
weitergabe und Speicherung von daten
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 |
AW: weitergabe und Speicherung von daten
"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: ![]() 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... |
AW: weitergabe und Speicherung von daten
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 |
AW: weitergabe und Speicherung von daten
Zitat:
Einstellungen sehen dann z.B. so aus:
Code:
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.
<?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> 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!!!" ;-) |
AW: weitergabe und Speicherung von daten
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? |
AW: weitergabe und Speicherung von daten
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? |
AW: weitergabe und Speicherung von daten
Der XML-Inhalt ist im Endeffekt ein langer String. Du kannst die Datei ganz normal mit z.B. einem
Delphi-Quellcode:
ö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
TFileStream
Delphi-Quellcode:
, da hast du es dann direkt drin, die Dateiendung ist dabei ziemlich egal.
LoadFromFile
Ob Delphi 6 MSXML schon kennt weiß ich nicht. Vielleicht solltest du die ![]() @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:
|
AW: weitergabe und Speicherung von daten
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? |
AW: weitergabe und Speicherung von daten
Dann bleibt nur noch Verschlüsseln. Aber das ist auch Bockmist, weil man das mit Reverseengineering knacken kann.
|
AW: weitergabe und Speicherung von daten
Zitat:
Solange das ein Singleplayerspiel ist, ist das imho aber nicht so tragisch. An deiner Stelle würde ich mir ![]() Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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