AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language FileStream mit "TIniFile Funktionalität".Methoden
Thema durchsuchen
Ansicht
Themen-Optionen

FileStream mit "TIniFile Funktionalität".Methoden

Ein Thema von Bjoerk · begonnen am 26. Mai 2014 · letzter Beitrag vom 28. Mai 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 26. Mai 2014, 17:08
Okay. Meistens arbeite ich aber mit einen eigenen IniFileParser. Der liest die Ini mit Assignfile und Co als TextFile ein. Wenn ich dort jetzt die Methoden (ReadMetaFile, ReadBinaryStream bzw. WriteMetaFile, SaveToStream) ergänze geht das dann noch als TextFile?
Das macht Sinn? Das musst du mir aber jetzt mal erklären, warum du nicht einfach Delphi-Referenz durchsuchenTIniFile benutzt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 26. Mai 2014, 17:23
Ist das verboten? Zum Beispiel weil IniFile bei jedem Wert neu abspeichert? Weil meiner schneller und umfangreicher ist? BTW, hab gesehen daß WriteBinaryStream BinToHex umwandelt. Also no Problem mit AssignFile und Co..
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 26. Mai 2014, 17:41
Ist das verboten? Zum Beispiel weil IniFile bei jedem Wert neu abspeichert? Weil meiner schneller und umfangreicher ist? BTW, hab gesehen daß WriteBinaryStream BinToHex umwandelt. Also no Problem mit AssignFile und Co..
Es gibt eine TMemIniFile in der IniFiles.pas, die Speichert nicht jedes mal direkt auf die Platte.
(und ist daher ggf. auch schneller).

Und brauchst du wirklich eine High-Speed Ini? Wenn du so viel/oft in eine Ini schreibst oder daraus liest dann solltest du wahrscheinlich eh über Alternativen nachdenken weil eine Ini keine Datenbank ist.

Wenn es nur ab und zu mal (beim Programmstart und vllt beim Ändern irgendwelcher Einstellungen) passiert dann machen auch 100ms nix aus
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 26. Mai 2014, 17:44
Okay. Ich hab's jetzt erst mal so probiert. Funzt einwandfrei.
Delphi-Quellcode:
function TMemIniFileEx.ReadMetaFile(const Section, Name: string;
  Value: TMetaFile): integer;
var
  MemoryStream: TMemoryStream;
begin
  MemoryStream := TMemoryStream.Create;
  try
    Result := ReadBinaryStream(Section, Name, MemoryStream); // integer, kein int64
...
Wobei ich hier mich etwas wundere.

Wollte man nun ein TIniFile, was nicht mit einer Datei, sondern auf einem Stream arbeitet (für den gesamten Inhalt der INI), so wie es im Titel heißt,
oder wollte man einen Stream in einem INI-Value abspeichern, so wie es in diesem Code gemacht wird?


Zitat:
Zum Beispiel weil IniFile bei jedem Wert neu abspeichert? Weil meiner schneller
Delphi-Referenz durchsuchenTMemIniFile


Man kann natürlich auch überlegen, ob man unbedingt eine INI verwenden muß, oder ob ein anderes Daten-/Dateiformat nicht auch ginge.
$2B or not $2B

Geändert von himitsu (26. Mai 2014 um 17:46 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 26. Mai 2014, 17:45
Genau so ist es, Michael. Eigentlich mißbrauche ich IniFiles als Datenbank. Das kann ich auf die Schnelle aber nicht ändern.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 26. Mai 2014, 17:47
Zitat:
Wobei ich hier mich etwas wundere.

Wollte man nun ein TIniFile, was nicht mit einer Datei, sondern auf einem Stream arbeitet (für den gesamten Inhalt der INI), so wie es im Titel heißt,
oder wollte man einen Stream in einem INI-Value abspeichern, so wie es in diesem Code gemacht wird?
Ganz recht Himitsu. Sir Rufo ist "Schuld". -> Siehe #2.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 26. Mai 2014, 17:54
Eigentlich mißbrauche ich IniFiles als Datenbank. Das kann ich auf die Schnelle aber nicht ändern.
Doch.


Du nimmst dir TCustomIniFile, baust als Backend den Zugriff auf die Datenbank ein und im Programm wird das Ding dann wie ein TIniFile verwendet ... schreibt und liest aber in Wirklichkeit in die/aus der Datenbank.

PS: Das gibt es auch schon, siehe Delphi-Referenz durchsuchenTRegIniFile, welches wie eine TIniFile aussieht, aber in Wirklichkeit die Daten in einem RegistryPfad speichert.
Danach kann man dann in Ruhe und Schrittweise die Funktionen direkt auf die DB umstellen, ohne daß der restliche alte Code gleich knallt.

Das ist einer der Vorteile der OOP ... kompatible Schnittstelle aber dahinter liegt eine unterschiedliche Funktion.
$2B or not $2B

Geändert von himitsu (26. Mai 2014 um 17:57 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 28. Mai 2014, 10:40
Stimmt. Gute Idee. Die Lese und Schreibzugriffe Klassenintern an eine Datenbank delegieren (private FDatenbank: TDatenbank). Welche würde sich denn für diesen Zweck anbieten (Client Server brauch ich nicht)?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#19

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 28. Mai 2014, 10:41
Firebird Embedded oder SQLite würde ich sagen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#20

AW: FileStream mit "TIniFile Funktionalität".Methoden

  Alt 28. Mai 2014, 10:44
Prinzipiell kannst Du da jede DB nehmen, die Embedded-Modus, also ohne Serverinstallation, unterstützt (Firebird Embedded, SQLite, Absolute Database, etc.).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:18 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