+    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;
+    HINI                            hIni;
+    static const wxChar             zDefunkt[] = _T("$$default");
+
+    if (rFile != "")
+    {
+        hIni = ::PrfOpenProfile(hab, (PSZ)WXSTRINGCAST rFile);
+        if (hIni != 0L)
+        {
+            ULONG n = ::PrfQueryProfileString( hIni
+                                              ,(PSZ)WXSTRINGCAST rSection
+                                              ,(PSZ)WXSTRINGCAST rEntry
+                                              ,(PSZ)zDefunkt
+                                              ,(void*)*ppValue
+                                              ,1000
+                                             );
+            if (n != 0L || wxStrcmp(*ppValue, zDefunkt) == 0)
+                return FALSE;
+        }
+        else
+            return FALSE;
+    }
+    else
+    {
+        ULONG n = ::PrfQueryProfileString( HINI_PROFILE
+                                          ,(PSZ)WXSTRINGCAST rSection
+                                          ,(PSZ)WXSTRINGCAST rEntry
+                                          ,(PSZ)zDefunkt
+                                          ,(void*)*ppValue
+                                          ,1000
+                                         );
+        if (n != 0L || wxStrcmp(*ppValue, zDefunkt) == 0)
+            return FALSE;
+    }
+    return TRUE;