AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Unnötige Ini-Befehle vermeiden sinnvoll?
Thema durchsuchen
Ansicht
Themen-Optionen

Unnötige Ini-Befehle vermeiden sinnvoll?

Ein Thema von a.def · begonnen am 11. Apr 2017 · letzter Beitrag vom 12. Apr 2017
Antwort Antwort
Seite 1 von 2  1 2      
a.def
(Gast)

n/a Beiträge
 
#1

Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:03
Im Zuge dessen, dass ich mir die Tage eine eigene Ini-Klasse angelegt habe mit ein paar Änderungen drin stelle ich mir jetzt eine Frage:
wie sinnvoll ist es, unnötige Befehle zu vermeiden?

Konkreter:
Wenn ich ein TMemIniFile verwende mir AutoSave := False, sollte man dann die Writes irgendwie blockieren?
Ich meine... der schreibt dann irgendetwas in den Speicher, was am Ende eh kein Mensch braucht.

Meine Unit kann man hier sehen: http://www.delphipraxis.net/1367025-post21.html

In etwa sowas hier
Delphi-Quellcode:
procedure WriteString(const Section, Ident, Value: string); reintroduce; overload;
procedure WriteInteger(const Section, Ident: string; Value: Integer); reintroduce; overload;
procedure WriteBool(const Section, Ident: string; Value: Boolean); reintroduce; overload;

//////////////////////////////////////////


procedure TMemIniFile.WriteString(const Section, Ident, Value: string);
begin
 if FAutoSave then
  inherited WriteString(Section, Ident, Value);
end;

procedure TMemIniFile.WriteInteger(const Section, Ident: string; Value: Integer);
begin
 if FAutoSave then
  inherited WriteString(Section, Ident, IntToStr(Value));
end;

procedure TMemIniFile.WriteBool(const Section, Ident: string; Value: Boolean);
const
 Values: array [Boolean] of string = ('0', '1');
begin
 if FAutoSave then
  inherited WriteString(Section, Ident, Values[Value]);
end;
Was ist von soetwas zu halten?

Geändert von a.def (11. Apr 2017 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:21
Ich meine... der schreibt dann irgendetwas in den Speicher, was am Ende eh kein Mensch braucht.

Was ist von soetwas zu halten?
Nur weil AutoSave=False ist, heißt es nicht, dass nicht gespeichert wird.
Immerhin kann man das Ganze auch am Ende immernoch per Update in die Datei schreiben lassen.
$2B or not $2B
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:22
Stimmt ist mein Fehler, muss ich umbenennen.
Aber der Sinn dahinter ist ja, dass nur lesender Zugriff stattfinden darf und kein schreibender

Ausgangsfrage ist aber: wie sinnvoll ist es unnötige Writes zu blockieren, wenn die Datei am Ende doch eh nicht geschrieben wird?

Geändert von a.def (11. Apr 2017 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:29
Ausgangsfrage ist aber: wie sinnvoll ist es unnötige Writes zu blockieren, wenn die Datei am Ende doch eh nicht geschrieben wird?
Wenn man innerhalb des Programms wieder ein Read macht, bekommt man meines Wissens dann die "neuen" Werte (Falls ich mich irre, ignoriert mich einfach ). Also kann das Write durchaus sinnvoll sein, auch wenn die Werte später nicht physisch gespeichert werden.
Peter
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#5

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:31
Ausgangsfrage ist aber: wie sinnvoll ist es unnötige Writes zu blockieren, wenn die Datei am Ende doch eh nicht geschrieben wird?
Wenn man innerhalb des Programms wieder ein Read macht, bekommt man meines Wissens dann die "neuen" Werte (Falls ich mich irre, ignoriert mich einfach ). Also kann das Write durchaus sinnvoll sein, auch wenn die Werte später nicht physisch gespeichert werden.
Ok das habe ich jetzt nicht verstanden
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:40
Ausgangsfrage ist aber: wie sinnvoll ist es unnötige Writes zu blockieren, wenn die Datei am Ende doch eh nicht geschrieben wird?
Wenn man innerhalb des Programms wieder ein Read macht, bekommt man meines Wissens dann die "neuen" Werte (Falls ich mich irre, ignoriert mich einfach ). Also kann das Write durchaus sinnvoll sein, auch wenn die Werte später nicht physisch gespeichert werden.
Aber nur wenn Die Ini-Datei oder besser gesagt die Instance der Ini-Klasse persistent ist, also z.B beim Programmstart erzeugt und bei Programmende zerstört wird.

Zitat:
Ausgangsfrage ist aber: wie sinnvoll ist es unnötige Writes zu blockieren, wenn die Datei am Ende doch eh nicht geschrieben wird?
Also wenn Du anfängst Dir darüber Gedanken zu machen, dann kannst Du auch im gleich im Code prüfen ob geschrieben werden soll, also z.B:

 if {not readonly} then StoreDatatoIni(Inifile);
Fritz Westermann

Geändert von Fritzew (11. Apr 2017 um 15:43 Uhr)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:49
Ausgangsfrage ist aber: wie sinnvoll ist es unnötige Writes zu blockieren, wenn die Datei am Ende doch eh nicht geschrieben wird?

Da kann ich doch nur mit einer Gegenfrage antworten..

Wie sinnvoll ist so eine Ini dann überhaupt ?

Ich geh mal davon aus, das du Programmeinstellungen speicherst. Wenn die nicht in irgendeiner Form auf der Platte landen, ärgerst du den Anwender, der jedesmal die Einstellungen neu machen darf.

Oder hab ich da was verpasst ?

Wenn du nur temporäre Daten in ein File speichern willst, würd ich nicht grad Inis nutzen
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:50
@Fritz: korrekt.
@a.def:
Gemeint ist, du lädst die Datei und hältst die Daten in deiner Komponente. Jedes write ändert die Daten, ohne in der Datei zu speichern. Ein Read greift dann auf die Daten im Speicher zu und erhält dann die Angaben durch das letzte Write.
So könntest du die Ini-Daten praktisch temporär ändern und nutzen
Peter
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#9

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 15:52
ich geh mal davon aus, das du programmeinstellungen speicherst. Wenn die nicht in irgendeiner form auf der platte landen, ärgerst du den anwender, der jedesmal die einstellungen neu machen darf.

Oder hab ich da was verpasst ?
sinn zusammengefasst damit es jeder versteht:
Das hier ist dasselbe wie der autosave-parameter ab berlin.
Mit diesem code verhindere ich fehler wenn mein programm in einem uac-geschütztem verzeichnis gestartet wird.

Teamspeak macht es ähnlich. Bei programmstart kommt in einem uac-geschützten verzeichnis die meldung
Zitat:
---------------------------
error
---------------------------
teamspeak 3 cannot write to the configuration file:
...settings.db

you can use teamspeak 3, but all settings will be lost!
---------------------------
ignore abort
---------------------------
ein klick auf ignore setzt in diesem fall eine art autosave auf false (ganz grob ausgedrückt).
Hab das jetzt nach "ReadOnly" umgeändert. Writes werden nur ausgeführt, wenn ReadOnly False ist.

Ich meinem Aberglauben dachte ich nur, ich könnte so ein paar unnötige Speicheroperationen auslassen

Geändert von a.def (11. Apr 2017 um 15:54 Uhr)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Unnötige Ini-Befehle vermeiden sinnvoll?

  Alt 11. Apr 2017, 16:08
Ok...auf das Prob bin ich bisher nicht gestoßen, da ich mir via Api die enstprechenden Userverzeichnisse hole

Aber für den genannten Fall (oder vielleicht gibts ja durchaus noch andere Fälle wo sowas nützlich wäre), macht das schon Sinn, vor dem Write das ganze entsprechend Abzufragen, auch wenns nur in den Speicher geht.

Bei enstprechenden Anwendungen (z.B. Video-Bearbeitungen), kann ja auf einem PC auch der Speicher mal eng werden.
Uwe
e=mc² or energy = milk * coffee²
  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 23:55 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