+    if (rFile != "")
+    {
+        hIni = ::PrfOpenProfile(hab, (PSZ)WXSTRINGCAST rFile);
+        if (hIni != 0L)
+        {
+            return (::PrfWriteProfileString( hIni
+                                            ,(PSZ)WXSTRINGCAST rSection
+                                            ,(PSZ)WXSTRINGCAST rEntry
+                                            ,(PSZ)WXSTRINGCAST rValue
+                                           ));
+        }
+    }
+    else
+        return (::PrfWriteProfileString( HINI_PROFILE
+                                        ,(PSZ)WXSTRINGCAST rSection
+                                        ,(PSZ)WXSTRINGCAST rEntry
+                                        ,(PSZ)WXSTRINGCAST rValue
+                                       ));
+    return FALSE;
+}
+
+bool wxWriteResource(
+  const wxString&                   rSection
+, const wxString&                   rEntry
+, float                             fValue
+, const wxString&                   rFile
+)
+{
+    wxChar                          zBuf[50];
+
+    wxSprintf(zBuf, "%.4f", fValue);
+    return wxWriteResource( rSection
+                           ,rEntry
+                           ,zBuf
+                           ,rFile
+                          );
+}
+
+bool wxWriteResource(
+  const wxString&                   rSection
+, const wxString&                   rEntry
+, long                              lValue
+, const wxString&                   rFile
+)
+{
+    wxChar                          zBuf[50];
+
+    wxSprintf(zBuf, "%ld", lValue);
+    return wxWriteResource( rSection
+                           ,rEntry
+                           ,zBuf
+                           ,rFile
+                          );
+}
+
+bool wxWriteResource(
+  const wxString&                   rSection
+, const wxString&                   rEntry
+, int                               lValue
+, const wxString&                   rFile
+)
+{
+    wxChar                          zBuf[50];
+
+    wxSprintf(zBuf, "%d", lValue);
+    return wxWriteResource( rSection
+                           ,rEntry
+                           ,zBuf
+                           ,rFile
+                          );
+}
+
+bool wxGetResource(
+  const wxString&                   rSection
+, const wxString&                   rEntry
+, wxChar**                          ppValue
+, const wxString&                   rFile
+)
+{
+    HAB                             hab = 0;
+    HINI                            hIni = 0;
+    wxChar                          zDefunkt[] = _T("$$default");
+    char                            zBuf[1000];
+
+    if (rFile != "")
+    {
+        hIni = ::PrfOpenProfile(hab, (PSZ)WXSTRINGCAST rFile);
+        if (hIni != 0L)
+        {
+            ULONG n = ::PrfQueryProfileString( hIni
+                                              ,(PSZ)WXSTRINGCAST rSection
+                                              ,(PSZ)WXSTRINGCAST rEntry
+                                              ,(PSZ)zDefunkt
+                                              ,(PVOID)zBuf
+                                              ,1000
+                                             );
+            if (zBuf == NULL)
+                return FALSE;
+            if (n == 0L || wxStrcmp(zBuf, zDefunkt) == 0)
+                return FALSE;
+            zBuf[n-1] = '\0';
+        }
+        else
+            return FALSE;
+    }
+    else
+    {
+        ULONG n = ::PrfQueryProfileString( HINI_PROFILE
+                                          ,(PSZ)WXSTRINGCAST rSection
+                                          ,(PSZ)WXSTRINGCAST rEntry
+                                          ,(PSZ)zDefunkt
+                                          ,(PVOID)zBuf
+                                          ,1000
+                                         );
+        if (zBuf == NULL)
+            return FALSE;
+        if (n == 0L || wxStrcmp(zBuf, zDefunkt) == 0)
+            return FALSE;
+        zBuf[n-1] = '\0';
+    }
+    strcpy((char*)*ppValue, zBuf);
+    return TRUE;