Autor Beitrag
hkk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 64

Win XP Pro, Win ME, openSUSE 10.2, Ubuntu 7.xx; Firefox 2 (en-US)
D7 Pers, D3 Prof
BeitragVerfasst: Mi 24.05.06 19:42 
hi!
es ist so: ich muss größere Datenmengen in Ini-dateien abspeichern (~500 KB nicht zusammenhängender Daten). Das problem ist aber, dass diese auf 64KB begrenzt sind.

WICHTIG: Dei der Anwendung dieser Befehle etc. handelt es sich um eine Datenbank-ähnliche anwendung. Bitte ratet mir nicht, eine richtige Datenbank zu verwenden, da es sich erstens für die Projektgröße nicht lohnt, und außerdem habe ich weder zeit, noch die möglichkeit noch lust habe mich ausführlich mit datenbanken zu beschäftigen (das hebe ich mir fürs studium auf, hehe)

Also, um dieses Problem zu behandeln, habe ich versucht vor dem schreibzugriff die dateigröße der jeweiligen Ini-datei zu lesen und bei mehr als 60kb eine neue anzulegen (durchnummerieren). Ich habe die Datei-Größe mit der FindFirst/TSearchRec.Size Methode ausgelesen, aber da es sich bei einigen der schreib-operationen um batch aktionen (in for schleifen) handelt, reagiert das SearchRec zu langsam. Sprich: der Schreibfehler taucht trotzdem auf, weil das SearchRec nicht die immer aktuelle Dateigröße anzeigt, sondern über einen "längeren" zeitraum die gleiche (ich schätze, das hat was mit der Windows-Datei-verwaltung zu tun).

Das heißt, dass ich entweder eine möglichkeit brauche,
das TSearchRec schneller reagieren zu lassen (die Datei/den ordnerinhalt vor jeder abrage zu aktualisieren)
ODER
eine schnellere/andere Methode, die Dateigröße auszulesen (ich habe gesucht, werde aber aus den anderen threads hier nicht schlau)
ODER
eine Alternative zu den Ini-Dateien - bei letztem ist zu beachten: es wäre mir sehr recht, wenn kein File (Reset, ReadFile, WriteFile etc) verwendet würde; außerdem müssen die Daten transportierbar sein, d.h. nicht in der Registry stehen.

wäre Danke für hilfe und tipps, bzw hinweise zu lösungen / ähnlichen Problemen.
Danke
~HKK
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 24.05.06 20:55 
Da springen mich doch sofort Streams an.
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Mi 24.05.06 21:15 
ich kann nirgendwo erkennen, warum ini-Dateien eine Größenbeschränkung haben sollen, woher hast du das? Welche INI-Klasse verwendest du?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 24.05.06 21:18 
Eine Größenbeschränkung ist mir auch nicht bekannt. Aber die INI-Dateien werden mit zunehmender Größe höllisch langsam. Schon deshalb würde sich ein anderes Vorgehen empfehlen.
Dundi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 16
Erhaltene Danke: 2



BeitragVerfasst: Mi 24.05.06 21:25 
Hallo,
Versuchs mal hiermit vielleicht hilft dir das weiter.
www.hinzen.de/delphi
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Mi 24.05.06 21:28 
ach, wenn man TIniFile nimmt ja, aber mit TMemIniFile geht das mit der Geschwindigkeit schon...
hkk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 64

Win XP Pro, Win ME, openSUSE 10.2, Ubuntu 7.xx; Firefox 2 (en-US)
D7 Pers, D3 Prof
BeitragVerfasst: Mi 24.05.06 22:09 
@ root_at_localhost: die größenbegrnzung hab ich bemerkt, als ich datensätze zu mehreren hundert dateien einlesen wollte. auf einmal brachte er ne TIniFileException, nen schreibfehler. hab dann kurz gegoogel (weil die Datei an sich genau 63,9 KB hatte) und an mehreren stellen gefunden dass ini files (native) die 64K begrenzung haben.

@dundi: Thx für den tip, ich werd die unit mal ausprobieren ob ich damit gut umgehen kann.

@jasocul:
das is ne gute idee. das prob is nur, dass ich noch nie mit streams gearbeitet haben. ich hab schon mitgekriegt dass die basis sachen nicht so schwer sind.
hast du spontan ne adresse wo ich n gutes tutorial dazu finden kann? ansonsten schau ich mich selber mal um.
noch was: wie hast du das im ganzen gemeint. als ergänzung(/erweiterung der ini files, oder als ersatz?

thx schon mal für die antworten!
~HKK
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Mi 24.05.06 22:22 
stream wär ein ersatz für ini, TMemIniFile verwendet nicht die Ini-Api und hat keine Größenbegrenzung (da bin ich mir eigentlich ziemlich sicher)
Dundi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 16
Erhaltene Danke: 2



BeitragVerfasst: Mi 24.05.06 22:42 
user profile iconroot_at_localhost hat folgendes geschrieben:
stream wär ein ersatz für ini, TMemIniFile verwendet nicht die Ini-Api und hat keine Größenbegrenzung (da bin ich mir eigentlich ziemlich sicher)


Richtig TMemIniFile hat bis auf den verfügbaren Arbeitsspeicher keine Größenbegrenzung
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 25.05.06 07:39 
Ein Tutorial zu Streams findest du hier.
Ich meinte das übrigens nicht als Ergänzung zu deinen INI-Dateien, sondern als Ersatz. Ansonten hättest du zwei verschiedene Verfahren, mit denen du auf deine Daten zugreifen müsstest.
hkk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 64

Win XP Pro, Win ME, openSUSE 10.2, Ubuntu 7.xx; Firefox 2 (en-US)
D7 Pers, D3 Prof
BeitragVerfasst: Do 25.05.06 10:48 
ok, thx an alle noch mal.

ich hab mir das tutorial für die streams angeschaut, und für meine zwecke ist es wirklich nicht so schwer ^^
ich steige also jetzt für ddieses Projekt auf Streams um.

~HKK