AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TMemIniFile neu einlesen

Ein Thema von faux · begonnen am 6. Jan 2007 · letzter Beitrag vom 19. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

TMemIniFile neu einlesen

  Alt 6. Jan 2007, 12:47
Hallo!

Ich benutze ein TMemIniFile zum speichern der Konfiguration. Die ganze Konfiguration soll über die INI Datei passieren, also kein GUI.
Wie kann ich den Befehl "Reload Config" realisieren? Es soll hierbei die Datei neu eingelesen werden, falls etwas verändert wurde.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 13:06
Hallo,

du könntest das Verzeichnis mit der Konfigurationsdatei überwachen und auf Änderungen an der Datei reagieren. Alternativ könntest du eine externe Überwachung implementieren die deine Anwendung benachrichtigt.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 13:15
Danke für die Antwort, aber so aufwändig will ich das gar nicht machen. Der Benutzer soll selbst im Menü wählen "Konfiguration JETZT neu einlesen".
Hört sich leicht an, aber wie lese ich ein TMemIniFile neu ein?
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 13:17
Zitat von faux:
Ich benutze ein TMemIniFile zum speichern der Konfiguration. Die ganze Konfiguration soll über die INI Datei passieren, also kein GUI.
Das widerspricht sich. Wenn Du ein ini-File direkt im Notepad ohne eigene Gui bearbeitest, wieso musst du mit TMemIniFile was speichern?

Zitat von faux:
Wie kann ich den Befehl "Reload Config" realisieren? Es soll hierbei die Datei neu eingelesen werden, falls etwas verändert wurde.
Indem Du dir eine ReloadConfig Prozedur schreibst, die die Ini File ausliest und die Werte in Eigenschaften einer oder mehrerer Klassen speichert.

Willst Du allerdings die Konfiguration automatisch neu laden sobald die ini-Datei von aussen verändert wurde, könntest du in regelmässigen Abständen den Timestamp der ini-Datei prüfen und gegebenfalls dann neu laden.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 13:45
Moin Tom,

Zitat von Jelly:
könntest du in regelmässigen Abständen den Timestamp der ini-Datei prüfen und gegebenfalls dann neu laden.
statt Polling wäre aber die Überwachung des Verzeichnisses, wie Marabu sie vorgeschlagen hat, zu bevorzugen (Hier im Forum suchenReadDirectoryChangesW / [dp]FindFirstChange*[/dp] usw.
Solche Änderungen sollten ja nicht so häufig auftreten.

Wobei natürlich MemIniFile den Nachteil hat, dass die Datei bei einer Änderung nicht gleich neu geschrieben wird, da müsste man dann bei jeder Änderung schon UpdateFile aufrufen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#6

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 13:52
Tach zusammen,

ich glaube das geht alles an seiner Fragestellung vorbei - obwohl gute Vorschläge, werd ich mir auch mal anschauen...

Seine Frage war doch: Wie lese ich ein TMemIniFile neu ein - der Benutzer triggert dies ja.

Und vielleicht ist die Antwort einfach:

Delphi-Quellcode:
  MyMemIniFile.Free;
  MyMemIniFile := tMemIniFile.Create(meinIniFilename);
jetzt ist die Collection der Werte neu eingelesen.

Sollte ich die Aufgabe falsch verstanden haben, ignoriert einfach meinen Post.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 13:54
Jup, thkerkmann, das wars.
Aber wird bei MemIniFile.Free nicht der Cache in die Datei geschrieben, also alle Änderungen überschrieben?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 14:02
Moin Faux,

Zitat von faux:
Aber wird bei MemIniFile.Free nicht der Cache in die Datei geschrieben, also alle Änderungen überschrieben?
vor dem Problem stehst Du bei MemIniFile aber immer, wenn Du die Änderungen nicht mit UpdateFile zurückschreibst. Dann würdest Du ja, wie schon gesagt, nicht einmal merken können, das etwas geändert wurde.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#9

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 14:31
Zitat von Christian Seehase:
Moin Faux,

Zitat von faux:
Aber wird bei MemIniFile.Free nicht der Cache in die Datei geschrieben, also alle Änderungen überschrieben?
vor dem Problem stehst Du bei MemIniFile aber immer, wenn Du die Änderungen nicht mit UpdateFile zurückschreibst. Dann würdest Du ja, wie schon gesagt, nicht einmal merken können, das etwas geändert wurde.
Also diese Antwort finde ich jetzt wieder verwirrend.

Eindeutige Antwort: Bei MemIniFile.Free; wird nix zurückgeschrieben.

Dazu gibt es eine extra Methode, nämlich MemIniFile.UpdateFile; Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: TMemIniFile neu einlesen

  Alt 6. Jan 2007, 16:49
Moin Thomas,

Zitat von thkerkmann:
Eindeutige Antwort: Bei MemIniFile.Free; wird nix zurückgeschrieben.

Dazu gibt es eine extra Methode, nämlich MemIniFile.UpdateFile;
Stimmt auch wieder

Auch wenn es, mehr oder weniger, dokumentiert, ist, halte ich dieses Verhalten für einen Fehler in der Implementierung.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 00:19 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