Entwickler-Ecke

Dateizugriff - Eigenes Dateiformat


majolo - Sa 14.09.02 18:02
Titel: Eigenes Dateiformat
Hi Leute,

ich benutze für mein eigenes Format *.lgd die INI Schreibroutinen.Habe lediglich die Endung geändert.Nun habe ich eine Frage: Kann dann dieses Format, das genauso aufgebaut ist, wie die INI-Datei nur mit eigenem Namen, mehr als 64KB speichern?Oder weiß einer eine andere Lösung wie ich ein eigenes großes Dateiformat realisieren kann?
Danke im vorraus
Gruß
majolo


tommie-lie - Sa 14.09.02 18:24

Wenn du die INI-Routinen verwendest, sind die Dateien auch INI-Dateien. Die Dateierweiterung ist nichts als eine Information für den Benutzer, der aber ncihts über den Inhalt aussagt. Du kannst ja schließlich eine Text-Datei auch .doc nenen, ein Word-Dokument wird sie dadurch noch lange nicht.
Es gelten also die gleichen Einschränkungen und Features, die auch für INI-Dateien gelten.
Wie du ein eigenes großes Dateiformat realisieren kannst, weiß ich auf die schnelle auch nciht. Ich würde aber eine binäre Datei vorschlagen, die meines Wissens auf 2GB begrenzt ist. Darin kannst du dann alle Infos schreiben, die du brauchst. Aber dann musst du alles selbst machen, also auch routinen schreiben, die die Infos sortieren, auslesen, schreiben und verwalten. Ziemlich großer Aufwand, würde ich sagen. Zumindest, wenn sie genauso funktionieren sollen wie INI-Dateien, nämlich mit Sections und kleineren Einträgen.

Sinnvoll wäre es vielleicht die INIs aufzusplitten. Ich weiß nicht, für welchen Zweck du es brauchst, aber wenn du mehrere Übergeordnete Strukturen hast, kannst du für jede eine extra INI-Datei nehmen...

Tschüß
Thomas


LCS - Sa 14.09.02 18:30

Hi majolo
wie tommie-lie schon geschrieben, ist da mit INI-Dateien net viel zu machen. Aber für was willst du das eigentlich verwenden? Mit INI-Dateien kannst du ja eigenlich nur einzelne Werte speichern. Wenn du davon so viele hast, dass 64KB nicht mehr ausreichen, gäbs ja noch die Möglichkeit mit Datenbanken zu arbeiten.

Gruss Lothar


majolo - Sa 14.09.02 20:49

Ja, das ganze in Datenbanken zu schreiben habe ich auch schon gedacht.Ich überlege noch.Die Ini soll eigentlich nur zum Zwischenspeichern dienen.Die Ini Schreibroutinen gefallen mir wie gesagt ganz gut und sind leicht zu realisieren.Danke für die Antworten.Ich werde noch mal die Datenbanken überdenken und dann noch mal posten.
Gruß
majolo


Klabautermann - Sa 14.09.02 22:19

Hallo,

ich habe es zwar noch nicht getestet aber soviel ich weis können Dateien bei tMemIniFile wesentlich größer werden.


Gruß
Klabautermann


majolo - So 15.09.02 17:18

@Klabautermann: Kannste mir das mal eventuell genauer erläutern??? :?: :?:

majolo


Klabautermann - Mo 16.09.02 12:54

Hallo,

majolo hat folgendes geschrieben:
@Klabautermann: Kannste mir das mal eventuell genauer erläutern??? :?: :?:


klar. Als neben tIniFile gibt es auch tMemIniFile. Dieses funktioniert änhlich wie tINIFile, nur das nicht jede änderung sofort in die Datei gespeichert wird. Dazu mus man tMemIniFile.UpdateFile aufrufen.
Mit diesem Objekt habe ich grade Experimentell ein INI-File mit über 1 MB erzeugt. Es gibt also keine 64 kB Grenze. Das Beispielprojekt kannst du dir runterladen [http://www.oitmann.de/prob/MemINI.zip].

Gruß
Klabautermann


majolo - Mo 16.09.02 18:02

Danke Klabautermann.Werde es gleich mal ausprobieren.
Gruß
majolo


majolo - Mo 16.09.02 19:10

Code funzt wunderbar. Das ist echt genial.Kann die INI so unbegrenzt groß sein?
Gruß
majolo


Klabautermann - Mo 16.09.02 19:15

Hallo,

majolo hat folgendes geschrieben:
Code funzt wunderbar. Das ist echt genial.Kann die INI so unbegrenzt groß sein?


unbegrenst ist gar nichts. Aber ich schätze sie kann so groß werden, das die Schreibzeit entsätzlich langsamm wird. So das du in dem Falle nach einer Alternative suchst bevor du an die maximale Dateigröße stößt. Ein GB sollten drin sein (genau, ich kenne die Maximale größe auch nicht ;)).
Du kannst mit dem Demo Programm ja Experimentieren. Da kanst du die Anzahl der Einträge ja festsetzen.

Gruß
Klabautermann


tommie-lie - Mo 16.09.02 20:18

Hallo,

Die maximalgröße einer einzigen Datei ist durch eine uralte FAT-Beschränkung immer noch drin und beträgt exakt 2GB (2048MB, usw.).
Sie lßt sich meines Wissens auch nicht umgehen. Aber eine Alternative wäre es, die Datei wenn's größer wir din zwei Dateien aufzuteilen. Aber um 2GB mit Text vollzuschreiben, braucht man jede Menge Text... (und vielleicht noch mehr ;-))
Ob es bei Linux oder Mac auch so ist, weiß ich nicht, aber zumindest MS schleppt dieses Manko seit mindestens 15 Jahren mit sich rum.

Tschüß
Thomas


majolo - Mo 16.09.02 20:26

Ich glaube 2 GB reichen locker.Tja das Microsoft diesen Sch.... immer noch nicht geändert hat ist wirklich schlimm.Die müssten es doch eigentlich auch mal geschnallt haben,dass das überflüssig ist, es sei denn se gibt tatsache sinvolle Funktionen der Beschränkungen.
Gruß
majolo


tommie-lie - Mo 16.09.02 20:30

Eine sinnvolle Funktion gibt es bei MS wohl in keinster Weise. Zumindest ist mir noch keine über den Weg gelaufen.

Aber die Beschränkung hat irgendwie etwas mit der FAT zu tun (also der Tabelle, die den Standort der Dateien enthält) und wie die Werte darin gespeichert werden. Ich glaube das das die gleiche Beschränkung wie damals bei den 2GB-Festplatten war, die MS ja durch eine zusammengeschusterte Notlösung behoben hat, nämlich eine zweite FAT, die einfach die erste Erweitert (FAT32) und so den Zugriff auch große HDDs erlaubte. Auf jeden Fall ist diese Beschränkung im FAT-FS drin, wie's bei den anderen (NTFS, HPFS, ext, ReiserFS, ...) aussieht, müsste ich nachlesen.

Tschüß
Thomas


majolo - Mo 16.09.02 21:13

Ja, 2GB Platten.Ich errinere mich. ich hatte mal einen Compaq PC mit ner 2 GB Platte.Schon ein paar Jahre her. Als ich dann ein 15 GB Platte einbauen wollte, das war ein Aufwand.Hat mich viel Zeit und Nerven gekostet
majolo


Zufall001 - Di 17.09.02 09:50

Die Verwendung von INI-Dateien - egal welcher Größe - ist nur bedingt anzuraten. Es ist zwar schön einfach zu verwenden, doch wenn es um Geschwindigkeit oder Netzwerkfähigkeit geht überhaupt nicht zu gebrauchen. Spätestens wenn Du eine Sortierung oder Suche auf den Daten machen möchtest ist Schluß mit Lustig. Da ist eine DB doch vergleichbar einfach zu erstellen und alle Funktionen, die ich brauche, sind schon vorhanden.

Gruß

Rainer


tommie-lie - Di 17.09.02 15:07

Da het er zufällig ;-) recht.
Textdateien werden ab bestimmten Größen einfach unbrauchbar, nicht weil man sie nciht mehr lesen oder schreiben kann, sondern weil sie viel zu viel Aufwand beim Suchen, Ordnen, sortieren etc. machen. Und da sind INI-Dateien natürlich keine Ausnahme.
Versuch mal, ob's mit der mylittlebase (url hab ich vergessen, evtl mal googlen, steht aber auch irgendwo im Forum). Ist zwar auch eine Dateibasierte Datenbank, aber die macht sich bestimmt etwas besser wenn es ums Zugreifen und Sortieren geht. Außerdem finde ich sie richtig einfach, weil sie nur simple und verständliche Funktionen enthält und man so gut wie keine Vorkenntnisse braucht.

Tschüß
Thomas


Alfons-G - Di 17.09.02 16:32

:wave:
MyLittleBase bekummst Du hier: [url=http://www.mylittlebase.org/]http://www.mylittlebase.org/[/url]

:lol:


majolo - Di 17.09.02 17:01

Ja,

ich bin noch am Grübeln.DB habe ich schon überlegt.Aber es soll wie gesagt nur eine Art TEMP Datei sein, die nach einer Benutzung eh gekillt wird.Die Datei soll auch höchstens nur 1MB gross sein. Mehr nicht.Aber trotzdem Danke für die Hinweise.
Gruß
majolo


tommie-lie - Di 17.09.02 18:47

Hallo,

Die DB kannst du auch nach der Ausführung löschen ;-)
Aber wenn du WÄHREND der Laufzeit öfters und exzessiv drauf zugreifst, wird sich eine DB sicherlich in einer Beschleunigung und höherer Stabilität bermerkbar machen. Gerade im Vergleich zu INI-Files.

Tschüß
Thomas


majolo - Di 17.09.02 19:54

Eine Überlegung ist es auf jeden Fall wert.Gibt es denn eine Möglichkeit, die beim zur Laufzeit erstellten Datenbank diese Unterdateien mit den Endungen mx usw. zu löschen oder nur in die reine DB einzubinden, denn diese Dateien stören immens.
majolo


tommie-lie - Di 17.09.02 20:07

Häh?
Welche .mx-Dateien? Welche Dateien stören?


LCS - Mi 18.09.02 08:29

Hi
Kenn die Datenbank zwar nicht, aber wahrscheinlich sind diese .mx Dateien die Indexdateien deiner Datenbank. Die kannst du nicht löschen (oder zumindest solltest du es nicht tun :mrgreen: )

Gruss Lothar


tommie-lie - Mi 18.09.02 16:07

nein.
Mylittlebase ist zwar Dateibaasiert, aber sie erstellt nur eine einzige Datei in der alles drin steht. Ähnlich wie bei QPW, Excel oder Calc. Also nur eine Tabelle. Die Dateien heißen MLB. Aber die DB kann auch CVS (oder CSV?) und SAM-Dateien lesen und schreiben. Aber mx war nicht dabei...

Tschüß
Thomas


majolo - Mi 18.09.02 18:18

Hallo,

sorry muss mich korrigieren.War gestern Abend ein bisschen schläfrig.Die Dateien hießen *.val und px usw. Ich weiß, dass man die Dateien nicht löschen sollte, deshalb fragte ich ja, ob man diese in die *.db datei einbindn kann, denn diese Dateien werden nur erstellt, wenn ich sie zur Laufzeit erstelle.Bei Erstellung mit dem von Borland mitgelieferten Programm DatabaseDesktop werden diese Dateien nicht dazu gefügt.Folglich irgendwie eingebunden.Oder so?
Gruß
majolo


tommie-lie - Mi 18.09.02 18:34

die ganzen Dateien gibt es gar nciht.
Bist du sicher, daß du MyLittleBase hast? Da gibt es ausschließlich eine einzige Datei. Mehr nicht.

Tschüß
Thomas


majolo - Mi 18.09.02 18:48

Ich glaube,dass ist ein Missvertändniss.Ich benutze gar kein MyLittleBase, sondern die Standardmäßigen Delphiroutinen und Kompos und Database Desktop von Borland.
Gruß
majolo


tommie-lie - Mi 18.09.02 19:45

Ahhh. Jetzt...
Ich hatte irgendwo die MLB empfohlen und du hast dann irgeendwas davon erzählt, daß es seltsame Dateien gibt.

Benutz' lieber die MLB, weil die nicht so ein Dateiwirrwarr hinterläßt ;-)

Tschüß
Thomas


majolo - Do 19.09.02 16:12

Hi ,

habe mir die MLB gezogen.Konnte sie zwar bis jetzt noch nicht installieren.
Werde sie dann aber ausprobieren.
Gruss
majolo


Aya - Sa 28.09.02 20:24

Hi,

also zur not kann ich euch ne von mir geschriebene INI Komponente geben... :)
ist im grunde ähnlich wie das tMemIniFile... also es wird erst in die datei geschrieben wenn man es möchte.. somit sind dateien möglich bis die Festplatte vol list :)

Falls interresse besteht, einfach melden.

Au'revoir,
Aya

PS: Ich bin ja fremd-Kompo gegnerin... von daher schlage ich hier auch einfach mal vor.. setzt dich hin und bastel dir selber was, das ne INI Datei ließt/schreibt... so schwer ist das garnich, eher gesagt ziiemlich einfach.. denn INI Dateien sind nun wirklich alles andere als schwer aufgebaut :)


Klabautermann - Sa 28.09.02 23:48

Hallo,
Aya hat folgendes geschrieben:
Ich bin ja fremd-Kompo gegnerin...

sehr lobenswert, wenn es nicht übertrieben wird. Ich denke INI-Dateien können auch sehr gut mit Bortmitteln gehandelt werden und an die Performance echter Datenbanken kommt man damit wirklich nicht ran.

@majolo: MyLittleBase ist soweit ich das verstanden habe auch nicht umbedingt der Renner. Die Standart Delphi-Datenbankkomponenten (wobei die Frage bleibt alter Standart oder neuer Standart?) verwenden auch bestimmte Datenbanken. Ich schätze bei dir ist Paradox. Du musst dir bewust sein, wenn du eine Datenbank verwendest (MyLittleBase ausgenommen) wirst du auch immer das Datenbank Management System mit ausliefern müssen. Grade dies sorgt für die Geschwindigkeit und sicherheit. Je nach Datenbank hat es aber einer eigengröße von 1MB bis viele viele MB ;). Wenn du Paradox auf die kalssische Art verwendest musst du die BDE mitausliefern. Diese hat um die 6 MB und du darfst sie nur mitr Zertifizierten Setup Programmen verteilen.
Dachte nur das solltest du in deine Überlegungen mit einfließen lassen.

Gruß
Klabautermann


tommie-lie - So 29.09.02 14:20

Nun ja, MLB ist nicht wirklich die Sptzendatenbank. Aber sie ist einfach gestrickt, basiert auf einfchen dateien, ist sehr leicht zu bedienen, und man braucht keine Datenbankengine, keine DLLs und kein Nichts zum Laufen. Das ist der Vorteil und der Grund, warum ich mich für diese entschieden habe...
Und sie ist klein (wie der Name schon vermuten lässt).

Tschüß
Thomas


majolo - So 29.09.02 23:07

Hi,

also die MLB verwende ich nicht.Hat mir nicht so gefallen. Als Datenbank verwende ich Paradox.Ich weiß, dass ich die BDE mit ausliefern muss. Na und?Ob ich eine CD mit 6MB mehr fülle ist doch auch egal und im heutigen Zeitalter der großen Festplatten machen die auch die Kuh nicht fett.Ihr habt recht, dass das von der Performace das Beste ist und deshalb verwende ich diesen DB-Typ auch.
Gruss
majolo


Klabautermann - Mo 30.09.02 09:25

Hallo,

majolo hat folgendes geschrieben:
Als Datenbank verwende ich Paradox. Ich weiß, dass ich die BDE mit ausliefern muss.

erst einmal gratulation zur Entscheidung eine Datenbank zu verwenden. Und für deine zwecke sollte Paradox auch ausreichen. Trotzdem sei auch dir noch einmal dieser Thread [http://www.auq.de/viewtopic.php?t=160] empfohlen. Sehe es einfach als Horizonterweiterung für einen angehenden Datenbankprogrammierer ;), es soll dich zu nichts verleiten.

Gruß
Klabautermann