dc_iniread auswerten
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 71 Mal
dc_iniread auswerten
Hi,
wenn ich mit dc_iniread einen Wert suche und auslese, dann bekomme ich in einen leeren String zurück wenn kein Wert gefunden wurde. Aber auch, wenn kein Wert vergeben wurde. Kann man nicht irgendwie ermitteln, ob der Wert nur leer war, oder gar nicht als Parameter vorhanden in der Datei?
wenn ich mit dc_iniread einen Wert suche und auslese, dann bekomme ich in einen leeren String zurück wenn kein Wert gefunden wurde. Aber auch, wenn kein Wert vergeben wurde. Kann man nicht irgendwie ermitteln, ob der Wert nur leer war, oder gar nicht als Parameter vorhanden in der Datei?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: dc_iniread auswerten
Hallo Manfred
Beim Lesen von .ini-Files gilt immer, dass du einen Defaultwert mitgibst, falls der Wert nicht gefunden wird.
Das sollte doch bei dc_iniread auch so sein oder? Sonst müsstest dein eigenes Ini-kreieren.
Ich hatte da mal eine eigene Klasse für Xbase.
Beim Lesen von .ini-Files gilt immer, dass du einen Defaultwert mitgibst, falls der Wert nicht gefunden wird.
Das sollte doch bei dc_iniread auch so sein oder? Sonst müsstest dein eigenes Ini-kreieren.
Ich hatte da mal eine eigene Klasse für Xbase.
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 71 Mal
Re: dc_iniread auswerten
Hi herbert,
bei der Funktion gebe ich mit welche Gruppe und welcher Parameter. Dann gibt die Funktion den Wert zurück der drin steht. Wenn nichts steht oder der Wert nicht vorhanden ist, dann gibt es immer 0 zurück oder leer.
bei der Funktion gebe ich mit welche Gruppe und welcher Parameter. Dann gibt die Funktion den Wert zurück der drin steht. Wenn nichts steht oder der Wert nicht vorhanden ist, dann gibt es immer 0 zurück oder leer.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2945
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: dc_iniread auswerten
Wozu ist das wichtig, ob er nicht vorhanden ist oder leer ?
In beiden Fällen hast du keinen Wert
In beiden Fällen hast du keinen Wert
Viele Grüße
Wolfgang
Wolfgang
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 71 Mal
Re: dc_iniread auswerten
richtig, nur wenn der Wert leer ist, dann muß ich nichts zurückschreiben. Wenn der Wert aber nicht eingetragen ist, dann muß er angelegt werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2945
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: dc_iniread auswerten
Aber es würde ja nicht stören, wenn du immer den Wert, egal ob vorhanden oder nicht, zurückschreibst ?
Viele Grüße
Wolfgang
Wolfgang
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 71 Mal
Re: dc_iniread auswerten
Hi Wolfgang,
es geht um ein recht blödes Problem. Am Anfang wird die Konfigdatei ausgelesen und im Zweifelsfall ergänzt. Jede WS hat eine zusätzlich eigene für sich gültige INI Datei, für abweichende Werte der Grundkonfiguration. Jetzt hatte ich folgendes Problem: Der User startet sein Programm und es erscheint nicht binnen 0,00001 Sekunde am Bildschirm. Was macht der User? Er klickt und klickt und klickt ....... Und jedesmal wird im Hintergrund das Programm aufgerufen. Endergebnis irgendwie wurde die INI Datei immer größer und größer, weil jeder Programmaufruf was reingeschrieben hat. Teilweise war die INI Datei statt 1200KB 2MB groß. Ob das jetzt wirklich mit dem unnötigen Schreiben zusammenhängt, war mir nicht mögloich zu ermitteln. Auf jeden Fall stand das System still. OK, jetzt habe ich das mit Mutex wohl in den Griff bekommen, das die Programme nur noch 1x aufgerufen werden können und das bevor die INI Dateien ausgelesen werden. Ich weiß aber nicht ob das die zukunftsweise Lösung ist. Das wird die Praxis zeigen. Leider ruft Roger mehrere Funktionen nacheinander auf um die Ini Dateien zu bearbeiten, deshalb wird es wohl auch schwer möglich sein, so eine Textdatei exklusiv versuchen zu öffenen um dann eben zu warten, oder eine Meldung am Bildschirm auszuwerfen.
es geht um ein recht blödes Problem. Am Anfang wird die Konfigdatei ausgelesen und im Zweifelsfall ergänzt. Jede WS hat eine zusätzlich eigene für sich gültige INI Datei, für abweichende Werte der Grundkonfiguration. Jetzt hatte ich folgendes Problem: Der User startet sein Programm und es erscheint nicht binnen 0,00001 Sekunde am Bildschirm. Was macht der User? Er klickt und klickt und klickt ....... Und jedesmal wird im Hintergrund das Programm aufgerufen. Endergebnis irgendwie wurde die INI Datei immer größer und größer, weil jeder Programmaufruf was reingeschrieben hat. Teilweise war die INI Datei statt 1200KB 2MB groß. Ob das jetzt wirklich mit dem unnötigen Schreiben zusammenhängt, war mir nicht mögloich zu ermitteln. Auf jeden Fall stand das System still. OK, jetzt habe ich das mit Mutex wohl in den Griff bekommen, das die Programme nur noch 1x aufgerufen werden können und das bevor die INI Dateien ausgelesen werden. Ich weiß aber nicht ob das die zukunftsweise Lösung ist. Das wird die Praxis zeigen. Leider ruft Roger mehrere Funktionen nacheinander auf um die Ini Dateien zu bearbeiten, deshalb wird es wohl auch schwer möglich sein, so eine Textdatei exklusiv versuchen zu öffenen um dann eben zu warten, oder eine Meldung am Bildschirm auszuwerfen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: dc_iniread auswerten
Ja, das habe ich verstanden. Aber warum gibst du keinen Defaultwert mit, wie das bei normalen Iniread-Funktionen der Fall ist? Windows gibt das sogar vor mit GetPrivateProfileString.
Falls du keinen Defaultwert mitgeben kannst, ist die Funktion nicht fertig gedacht und müsstest auf andere Art das .INI-File lesen.
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
- Manfred
- Foren-Administrator
- Beiträge: 21225
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 71 Mal
Re: dc_iniread auswerten
weil der Defaultwert in der Hauptini steht, der auch einmalig gesetzt wird beim Erzeugen. Die WS INI dient nur der Überschreibung, falls der Wert anders ist. So kann man direkt sehen, welcher Wert im Zweifelsfalle wie abweicht. Außerdem ist das jetzt hier nur ein Beispiel und soll nicht dazu dienen zu philosophieren warum ich es nicht anders mache.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2945
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: dc_iniread auswerten
Hallo Manfred,
mache dir doch eine GetSet-Funktion, solange die Ini-Datei gelesen/geschrieben wird.
In deiner LeseRoutine dann den als erstes den Aufruf
Damit kann dann die Ini-Datei nur einmal gelesen/geschrieben/ergänzt werden.
mache dir doch eine GetSet-Funktion, solange die Ini-Datei gelesen/geschrieben wird.
Code: Alles auswählen
static function IniReadIsRunning(lSet)
static lIsRunning:=.F.
if pcount()>0
lIsRunning:=lSet
endif
return lIsRunning
Code: Alles auswählen
if IniReadIsRunning()
** Meldung läuft schon...
return
endif
IniReadIsRunning(.T.)
..Ini-Datei Lesen
IniReadIsRunning(.F.)
return
Viele Grüße
Wolfgang
Wolfgang
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: dc_iniread auswerten
Verwende für die Parameter eine Datenbank oder baue dir deine eigene Funktion und das Problem geht weg.
dc_readini() ist nicht für Netzwerk/Multiuser/Mehrfachzugriff geeignet. Wie du in den ersten Zeilen des Sourcecodes leicht feststellen und selbst erlebt hast. Deine Lösung mit Mutex ist keine Lösung des Problems sondern nur der verzweifelte Versuch die Situation des Mehrfachzugriff zu verhindern ..... zudem mit dem Nachteil dass auch wenn du das willst die App nicht ein 2. Mal öffnen kannst.
dc_readini() ist nicht für Netzwerk/Multiuser/Mehrfachzugriff geeignet. Wie du in den ersten Zeilen des Sourcecodes leicht feststellen und selbst erlebt hast. Deine Lösung mit Mutex ist keine Lösung des Problems sondern nur der verzweifelte Versuch die Situation des Mehrfachzugriff zu verhindern ..... zudem mit dem Nachteil dass auch wenn du das willst die App nicht ein 2. Mal öffnen kannst.
Valar Morghulis
Gruss Carlo
Gruss Carlo