Seite 1 von 1

Exaktes Speichern für Float und Doubles in Preferences

Verfasst: 28.03.2006 17:31
von NicTheQuick
Ein Beispiel ist dabei. Die Datei "Preferencestest.pref" muss wieder von
Hand gelöscht werden.

Code: Alles auswählen

Procedure WritePreferenceDoubleEx(Keyword.s, Value.d)
  Protected q.q
  q = PeekQ(@Value)
  ProcedureReturn WritePreferenceQuad(Keyword, q)
EndProcedure
Procedure.d ReadPreferenceDoubleEx(Keyword.s, DefaultValue.d)
  Protected q.q
  q = PeekQ(@DefaultValue)
  q = ReadPreferenceQuad(Keyword, q)
  ProcedureReturn PeekD(@q)
EndProcedure

Procedure WritePreferenceFloatEx(Keyword.s, Value.f)
  Protected l.l
  l = PeekL(@Value)
  ProcedureReturn WritePreferenceLong(Keyword, l)
EndProcedure
Procedure.f ReadPreferenceFloatEx(Keyword.s, DefaultValue.f)
  Protected l.l
  l = PeekL(@DefaultValue)
  l = ReadPreferenceLong(Keyword, l)
  ProcedureReturn PeekF(@l)
EndProcedure

CreatePreferences("Preferencestest.pref")

d.d = 1
For a.l = 1 To 85
  d * 0.5
Next
Debug "Das ist d = (0.5)^85: " + StrD(d, 25)
Debug "d wird jetzt gespeichert"
Debug ""
WritePreferenceDouble("PB", d)
WritePreferenceDoubleEx("NTQ", d)

For a.l = 1 To 85
  d * 2
Next
Debug "Das ist d * 2^85: " + StrD(d, 25)
Debug ""

ClosePreferences()

OpenPreferences("Preferencestest.pref")
Debug "d wird jetzt normal ausgelesen"

d = ReadPreferenceDouble("PB", -1)
For a.l = 1 To 85
  d * 2
Next
Debug "d * 2^85: " + StrD(d, 25)
Debug ""

Debug "d wird jetzt anders ausgelesen"
d = ReadPreferenceDoubleEx("NTQ", -1)
For a.l = 1 To 85
  d * 2
Next
Debug "d * 2^85: " + StrD(d, 25)
ClosePreferences()