[Libreoffice-commits] core.git: 2 commits - basic/source sc/source sd/source svtools/source svx/source sw/source uui/source vcl/source

Caolán McNamara caolanm at redhat.com
Wed Feb 8 13:54:52 UTC 2017


 basic/source/classes/sb.cxx       |   30 -
 basic/source/classes/sb.src       |  646 +++++++-------------------------------
 sc/source/ui/src/scerrors.src     |  228 ++++---------
 sd/source/core/glob.src           |   19 -
 svtools/source/dialogs/so3res.src |  215 ++++--------
 svtools/source/misc/ehdl.cxx      |   60 +--
 svx/source/items/svxerr.src       |  163 +++------
 svx/source/src/errtxt.src         |  483 ++++++----------------------
 sw/source/ui/app/error.src        |  174 ++--------
 uui/source/iahndl.cxx             |   10 
 uui/source/iahndl.hxx             |    8 
 uui/source/ids.src                |  429 ++++++++-----------------
 vcl/source/gdi/pngread.cxx        |    4 
 13 files changed, 674 insertions(+), 1795 deletions(-)

New commits:
commit e5b23d924d60e7a0fb67c44c6dad3f4cb3bd5ddc
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Feb 8 13:33:02 2017 +0000

    clarify we're not setting a pal index in the mask
    
    no logic changed intended, SetPixelIndex expands
    to this, just want to clarify that this is an alpha
    value, not an index into a palette
    
    Change-Id: Ie9bb188b116adf3eab4e2bb1d6da8badbaead88b

diff --git a/vcl/source/gdi/pngread.cxx b/vcl/source/gdi/pngread.cxx
index c0a0007..055456a 100644
--- a/vcl/source/gdi/pngread.cxx
+++ b/vcl/source/gdi/pngread.cxx
@@ -1628,7 +1628,7 @@ void PNGReaderImpl::ImplSetAlphaPixel( sal_uInt32 nY, sal_uInt32 nX,
     nX >>= mnPreviewShift;
 
     mxAcc->SetPixelIndex( nY, nX, nPalIndex );
-    mpMaskAcc->SetPixelIndex( nY, nX, ~nAlpha );
+    mpMaskAcc->SetPixel(nY, nX, BitmapColor(~nAlpha));
 }
 
 void PNGReaderImpl::ImplSetAlphaPixel( sal_uInt32 nY, sal_uInt32 nX,
@@ -1642,7 +1642,7 @@ void PNGReaderImpl::ImplSetAlphaPixel( sal_uInt32 nY, sal_uInt32 nX,
     mxAcc->SetPixel( nY, nX, rBitmapColor );
     if (!mpMaskAcc)
         return;
-    mpMaskAcc->SetPixelIndex( nY, nX, ~nAlpha );
+    mpMaskAcc->SetPixel(nY, nX, BitmapColor(~nAlpha));
 }
 
 sal_uInt32 PNGReaderImpl::ImplReadsal_uInt32()
commit 2c91fc19445bb503652e97cc8b9f9014db436c37
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Feb 8 12:51:44 2017 +0000

    replace localresource of strings and keys with StringArray
    
    Change-Id: I402f5485af0c1e60677b8291c879bc7ca14633d3

diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx
index 60d71c7..fde845d 100644
--- a/basic/source/classes/sb.cxx
+++ b/basic/source/classes/sb.cxx
@@ -19,6 +19,7 @@
 
 #include "sb.hxx"
 #include <tools/rcid.h>
+#include <tools/resary.hxx>
 #include <tools/stream.hxx>
 #include <tools/errinf.hxx>
 #include <comphelper/solarmutex.hxx>
@@ -1584,39 +1585,22 @@ void StarBASIC::SetErrorData( SbError nCode, sal_uInt16 nLine,
     aGlobals.nCol2 = nCol2;
 }
 
-
-// help class for access to string SubResource of a Resource.
-// Source: sfx2\source\doc\docfile.cxx (TLX)
-struct BasicStringList_Impl : private Resource
-{
-    ResId aResId;
-
-    BasicStringList_Impl( ResId& rErrIdP,  sal_uInt16 nId)
-        : Resource( rErrIdP ),aResId(nId, *rErrIdP.GetResMgr() ){}
-    ~BasicStringList_Impl() { FreeResource(); }
-
-    OUString GetString(){ return aResId.toString(); }
-    bool IsErrorTextAvailable()
-        { return IsAvailableRes(aResId.SetRT(RSC_STRING)); }
-};
-
-
 void StarBASIC::MakeErrorText( SbError nId, const OUString& aMsg )
 {
     SolarMutexGuard aSolarGuard;
     sal_uInt16 nOldID = GetVBErrorCode( nId );
 
     // instantiate the help class
-    BasResId aId( RID_BASIC_START );
-    BasicStringList_Impl aMyStringList( aId, sal_uInt16(nId & ERRCODE_RES_MASK) );
-
-    if( aMyStringList.IsErrorTextAvailable() )
+    ResStringArray aMyStringList(BasResId(RID_BASIC_START));
+    sal_uInt32 nErrIdx = aMyStringList.FindIndex(sal_uInt16(nId & ERRCODE_RES_MASK));
+    if (nErrIdx != RESARRAY_INDEX_NOTFOUND)
     {
         // merge message with additional text
-        OUStringBuffer aMsg1(aMyStringList.GetString());
+        OUString sError = aMyStringList.GetString(nErrIdx);
+        OUStringBuffer aMsg1(sError);
         // replace argument placeholder with %s
         OUString aSrgStr( "$(ARG1)" );
-        sal_Int32 nResult = aMyStringList.GetString().indexOf( aSrgStr );
+        sal_Int32 nResult = sError.indexOf(aSrgStr);
 
         if( nResult >= 0 )
         {
diff --git a/basic/source/classes/sb.src b/basic/source/classes/sb.src
index e3da1c4..5b75b94 100644
--- a/basic/source/classes/sb.src
+++ b/basic/source/classes/sb.src
@@ -21,522 +21,142 @@
 #include "sb.hrc"
 #include <basic/sberrors.hxx>
 
-Resource RID_BASIC_START
+StringArray RID_BASIC_START
 {
-    String ERRCODE_BASIC_SYNTAX & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Syntax error." ;
-    };
-    String ERRCODE_BASIC_NO_GOSUB & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Return without Gosub." ;
-    };
-    String ERRCODE_BASIC_REDO_FROM_START & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Incorrect entry; please retry." ;
-    };
-    String ERRCODE_BASIC_BAD_ARGUMENT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid procedure call." ;
-    };
-    String ERRCODE_BASIC_MATH_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Overflow." ;
-    };
-    String ERRCODE_BASIC_NO_MEMORY & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Not enough memory." ;
-    };
-    String ERRCODE_BASIC_ALREADY_DIM & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Array already dimensioned." ;
-    };
-    String ERRCODE_BASIC_OUT_OF_RANGE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Index out of defined range." ;
-    };
-    String ERRCODE_BASIC_DUPLICATE_DEF & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Duplicate definition." ;
-    };
-    String ERRCODE_BASIC_ZERODIV & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Division by zero." ;
-    };
-    String ERRCODE_BASIC_VAR_UNDEFINED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Variable not defined." ;
-    };
-    String ERRCODE_BASIC_CONVERSION & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Data type mismatch." ;
-    };
-    String ERRCODE_BASIC_BAD_PARAMETER & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid parameter." ;
-    };
-    String ERRCODE_BASIC_USER_ABORT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Process interrupted by user." ;
-    };
-    String ERRCODE_BASIC_BAD_RESUME & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Resume without error." ;
-    };
-    String ERRCODE_BASIC_STACK_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Not enough stack memory." ;
-    };
-    String ERRCODE_BASIC_PROC_UNDEFINED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Sub-procedure or function procedure not defined." ;
-    };
-    String ERRCODE_BASIC_BAD_DLL_LOAD & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Error loading DLL file." ;
-    };
-    String ERRCODE_BASIC_BAD_DLL_CALL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Wrong DLL call convention." ;
-    };
-    String ERRCODE_BASIC_INTERNAL_ERROR & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Internal error $(ARG1)." ;
-    };
-    String ERRCODE_BASIC_BAD_CHANNEL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid file name or file number." ;
-    };
-    String ERRCODE_BASIC_FILE_NOT_FOUND & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "File not found." ;
-    };
-    String ERRCODE_BASIC_BAD_FILE_MODE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Incorrect file mode." ;
-    };
-    String ERRCODE_BASIC_FILE_ALREADY_OPEN & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "File already open." ;
-    };
-    String ERRCODE_BASIC_IO_ERROR & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Device I/O error." ;
-    };
-    String ERRCODE_BASIC_FILE_EXISTS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "File already exists." ;
-    };
-    String ERRCODE_BASIC_BAD_RECORD_LENGTH & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Incorrect record length." ;
-    };
-    String ERRCODE_BASIC_DISK_FULL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Disk or hard drive full." ;
-    };
-    String ERRCODE_BASIC_READ_PAST_EOF & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Reading exceeds EOF." ;
-    };
-    String ERRCODE_BASIC_BAD_RECORD_NUMBER & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Incorrect record number." ;
-    };
-    String ERRCODE_BASIC_TOO_MANY_FILES & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Too many files." ;
-    };
-    String ERRCODE_BASIC_NO_DEVICE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Device not available." ;
-    };
-    String ERRCODE_BASIC_ACCESS_DENIED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Access denied." ;
-    };
-    String ERRCODE_BASIC_NOT_READY & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Disk not ready." ;
-    };
-    String ERRCODE_BASIC_NOT_IMPLEMENTED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Not implemented." ;
-    };
-    String ERRCODE_BASIC_DIFFERENT_DRIVE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Renaming on different drives impossible." ;
-    };
-    String ERRCODE_BASIC_ACCESS_ERROR & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Path/File access error." ;
-    };
-    String ERRCODE_BASIC_PATH_NOT_FOUND & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Path not found." ;
-    };
-    String ERRCODE_BASIC_NO_OBJECT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Object variable not set." ;
-    };
-    String ERRCODE_BASIC_BAD_PATTERN & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid string pattern." ;
-    };
-    String ERRCODE_BASIC_IS_NULL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Use of zero not permitted." ;
-    };
-    String ERRCODE_BASIC_DDE_ERROR & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "DDE Error." ;
-    };
-    String ERRCODE_BASIC_DDE_WAITINGACK & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Awaiting response to DDE connection." ;
-    };
-    String ERRCODE_BASIC_DDE_OUTOFCHANNELS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "No DDE channels available." ;
-    };
-    String ERRCODE_BASIC_DDE_NO_RESPONSE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "No application responded to DDE connect initiation." ;
-    };
-    String ERRCODE_BASIC_DDE_MULT_RESPONSES & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Too many applications responded to DDE connect initiation." ;
-    };
-    String ERRCODE_BASIC_DDE_CHANNEL_LOCKED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "DDE channel locked." ;
-    };
-    String ERRCODE_BASIC_DDE_NOTPROCESSED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "External application cannot execute DDE operation." ;
-    };
-    String ERRCODE_BASIC_DDE_TIMEOUT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Timeout while waiting for DDE response." ;
-    };
-    String ERRCODE_BASIC_DDE_USER_INTERRUPT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "User pressed ESCAPE during DDE operation." ;
-    };
-    String ERRCODE_BASIC_DDE_BUSY & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "External application busy." ;
-    };
-    String ERRCODE_BASIC_DDE_NO_DATA & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "DDE operation without data." ;
-    };
-    String ERRCODE_BASIC_DDE_WRONG_DATA_FORMAT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Data are in wrong format." ;
-    };
-    String ERRCODE_BASIC_DDE_PARTNER_QUIT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "External application has been terminated." ;
-    };
-    String ERRCODE_BASIC_DDE_CONV_CLOSED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "DDE connection interrupted or modified." ;
-    };
-    String ERRCODE_BASIC_DDE_NO_CHANNEL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "DDE method invoked with no channel open." ;
-    };
-    String ERRCODE_BASIC_DDE_INVALID_LINK & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid DDE link format." ;
-    };
-    String ERRCODE_BASIC_DDE_QUEUE_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "DDE message has been lost." ;
-    };
-    String ERRCODE_BASIC_DDE_LINK_ALREADY_EST & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Paste link already performed." ;
-    };
-    String ERRCODE_BASIC_DDE_LINK_INV_TOPIC & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Link mode cannot be set due to invalid link topic." ;
-    };
-    String ERRCODE_BASIC_DDE_DLL_NOT_FOUND & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "DDE requires the DDEML.DLL file." ;
-    };
-    String ERRCODE_BASIC_CANNOT_LOAD & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Module cannot be loaded; invalid format." ;
-    };
-    String ERRCODE_BASIC_BAD_INDEX & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid object index." ;
-    };
-    String ERRCODE_BASIC_NO_ACTIVE_OBJECT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Object is not available." ;
-    };
-    String ERRCODE_BASIC_BAD_PROP_VALUE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Incorrect property value." ;
-    };
-    String ERRCODE_BASIC_PROP_READONLY & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "This property is read-only." ;
-    };
-    String ERRCODE_BASIC_PROP_WRITEONLY & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "This property is write only." ;
-    };
-    String ERRCODE_BASIC_INVALID_OBJECT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid object reference." ;
-    };
-    String ERRCODE_BASIC_NO_METHOD & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Property or method not found: $(ARG1)." ;
-    };
-    String ERRCODE_BASIC_NEEDS_OBJECT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Object required." ;
-    };
-    String ERRCODE_BASIC_INVALID_USAGE_OBJECT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid use of an object." ;
-    };
-    String ERRCODE_BASIC_NO_OLE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "OLE Automation is not supported by this object." ;
-    };
-    String ERRCODE_BASIC_BAD_METHOD & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "This property or method is not supported by the object." ;
-    };
-    String ERRCODE_BASIC_OLE_ERROR & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "OLE Automation Error." ;
-    };
-    String ERRCODE_BASIC_BAD_ACTION & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "This action is not supported by given object." ;
-    };
-    String ERRCODE_BASIC_NO_NAMED_ARGS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Named arguments are not supported by given object." ;
-    };
-    String ERRCODE_BASIC_BAD_LOCALE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The current locale setting is not supported by the given object." ;
-    };
-    String ERRCODE_BASIC_NAMED_NOT_FOUND & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Named argument not found." ;
-    };
-    String ERRCODE_BASIC_NOT_OPTIONAL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Argument is not optional." ;
-    };
-    String ERRCODE_BASIC_WRONG_ARGS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid number of arguments." ;
-    };
-    String ERRCODE_BASIC_NOT_A_COLL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Object is not a list." ;
-    };
-    String ERRCODE_BASIC_BAD_ORDINAL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid ordinal number." ;
-    };
-    String ERRCODE_BASIC_DLLPROC_NOT_FOUND & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Specified DLL function not found." ;
-    };
-    String ERRCODE_BASIC_BAD_CLIPBD_FORMAT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid clipboard format." ;
-    };
-    String ERRCODE_BASIC_PROPERTY_NOT_FOUND & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Object does not have this property." ;
-    };
-    String ERRCODE_BASIC_METHOD_NOT_FOUND & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Object does not have this method." ;
-    };
-    String ERRCODE_BASIC_ARG_MISSING & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Required argument lacking." ;
-    };
-    String ERRCODE_BASIC_BAD_NUMBER_OF_ARGS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid number of arguments." ;
-    };
-    String ERRCODE_BASIC_METHOD_FAILED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Error executing a method." ;
-    };
-    String ERRCODE_BASIC_SETPROP_FAILED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Unable to set property." ;
-    };
-    String ERRCODE_BASIC_GETPROP_FAILED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Unable to determine property." ;
-    };
-     // Compiler errors. These are not runtime errors.
-    String ERRCODE_BASIC_UNEXPECTED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Unexpected symbol: $(ARG1)." ;
-    };
-    String ERRCODE_BASIC_EXPECTED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Expected: $(ARG1)." ;
-    };
-    String ERRCODE_BASIC_SYMBOL_EXPECTED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Symbol expected." ;
-    };
-    String ERRCODE_BASIC_VAR_EXPECTED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Variable expected." ;
-    };
-    String ERRCODE_BASIC_LABEL_EXPECTED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Label expected." ;
-    };
-    String ERRCODE_BASIC_LVALUE_EXPECTED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Value cannot be applied." ;
-    };
-    String ERRCODE_BASIC_VAR_DEFINED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Variable $(ARG1) already defined." ;
-    };
-    String ERRCODE_BASIC_PROC_DEFINED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Sub procedure or function procedure $(ARG1) already defined." ;
-    };
-    String ERRCODE_BASIC_LABEL_DEFINED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Label $(ARG1) already defined." ;
-    };
-    String ERRCODE_BASIC_UNDEF_VAR & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Variable $(ARG1) not found." ;
-    };
-    String ERRCODE_BASIC_UNDEF_ARRAY & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Array or procedure $(ARG1) not found." ;
-    };
-    String ERRCODE_BASIC_UNDEF_PROC & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Procedure $(ARG1) not found." ;
-    };
-    String ERRCODE_BASIC_UNDEF_LABEL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Label $(ARG1) undefined." ;
-    };
-    String ERRCODE_BASIC_UNDEF_TYPE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Unknown data type $(ARG1)." ;
-    };
-    String ERRCODE_BASIC_BAD_EXIT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Exit $(ARG1) expected." ;
-    };
-    String ERRCODE_BASIC_BAD_BLOCK & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Statement block still open: $(ARG1) missing." ;
-    };
-    String ERRCODE_BASIC_BAD_BRACKETS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Parentheses do not match." ;
-    };
-    String ERRCODE_BASIC_BAD_DECLARATION & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Symbol $(ARG1) already defined differently." ;
-    };
-    String ERRCODE_BASIC_BAD_PARAMETERS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Parameters do not correspond to procedure." ;
-    };
-    String ERRCODE_BASIC_BAD_CHAR_IN_NUMBER & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Invalid character in number." ;
-    };
-    String ERRCODE_BASIC_MUST_HAVE_DIMS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Array must be dimensioned." ;
-    };
-    String ERRCODE_BASIC_NO_IF & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Else/Endif without If." ;
-    };
-    String ERRCODE_BASIC_NOT_IN_SUBR & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ARG1) not allowed within a procedure." ;
-    };
-    String ERRCODE_BASIC_NOT_IN_MAIN & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ARG1) not allowed outside a procedure." ;
-    };
-    String ERRCODE_BASIC_WRONG_DIMS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Dimension specifications do not match." ;
-    };
-    String ERRCODE_BASIC_BAD_OPTION & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Unknown option: $(ARG1)." ;
-    };
-    String ERRCODE_BASIC_CONSTANT_REDECLARED & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Constant $(ARG1) redefined." ;
-    };
-    String ERRCODE_BASIC_PROG_TOO_LARGE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Program too large." ;
-    };
-    String ERRCODE_BASIC_NO_STRINGS_ARRAYS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Strings or arrays not permitted." ;
-    };
-    String ERRCODE_BASIC_EXCEPTION & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "An exception occurred $(ARG1)." ;
-    };
-    String ERRCODE_BASIC_ARRAY_FIX & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "This array is fixed or temporarily locked." ;
-    };
-    String ERRCODE_BASIC_STRING_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Out of string space." ;
-    };
-    String ERRCODE_BASIC_EXPR_TOO_COMPLEX & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Expression Too Complex." ;
-    };
-    String ERRCODE_BASIC_OPER_NOT_PERFORM & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Can't perform requested operation." ;
-    };
-    String ERRCODE_BASIC_TOO_MANY_DLL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Too many DLL application clients." ;
-    };
-    String ERRCODE_BASIC_LOOP_NOT_INIT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "For loop not initialized." ;
-    };
-    String ERRCODE_BASIC_COMPAT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ARG1)" ;
+    ItemList [ en-US ] =
+    {
+        < "Syntax error." ; ERRCODE_BASIC_SYNTAX & ERRCODE_RES_MASK ; >;
+        < "Return without Gosub." ; ERRCODE_BASIC_NO_GOSUB & ERRCODE_RES_MASK ; >;
+        < "Incorrect entry; please retry." ; ERRCODE_BASIC_REDO_FROM_START & ERRCODE_RES_MASK ; >;
+        < "Invalid procedure call." ; ERRCODE_BASIC_BAD_ARGUMENT & ERRCODE_RES_MASK ; >;
+        < "Overflow." ; ERRCODE_BASIC_MATH_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "Not enough memory." ; ERRCODE_BASIC_NO_MEMORY & ERRCODE_RES_MASK ; >;
+        < "Array already dimensioned." ; ERRCODE_BASIC_ALREADY_DIM & ERRCODE_RES_MASK ; >;
+        < "Index out of defined range." ; ERRCODE_BASIC_OUT_OF_RANGE & ERRCODE_RES_MASK ; >;
+        < "Duplicate definition." ; ERRCODE_BASIC_DUPLICATE_DEF & ERRCODE_RES_MASK ; >;
+        < "Division by zero." ; ERRCODE_BASIC_ZERODIV & ERRCODE_RES_MASK ; >;
+        < "Variable not defined." ; ERRCODE_BASIC_VAR_UNDEFINED & ERRCODE_RES_MASK ; >;
+        < "Data type mismatch." ; ERRCODE_BASIC_CONVERSION & ERRCODE_RES_MASK ; >;
+        < "Invalid parameter." ; ERRCODE_BASIC_BAD_PARAMETER & ERRCODE_RES_MASK ; >;
+        < "Process interrupted by user." ; ERRCODE_BASIC_USER_ABORT & ERRCODE_RES_MASK ; >;
+        < "Resume without error." ; ERRCODE_BASIC_BAD_RESUME & ERRCODE_RES_MASK ; >;
+        < "Not enough stack memory." ; ERRCODE_BASIC_STACK_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "Sub-procedure or function procedure not defined." ; ERRCODE_BASIC_PROC_UNDEFINED & ERRCODE_RES_MASK ; >;
+        < "Error loading DLL file." ; ERRCODE_BASIC_BAD_DLL_LOAD & ERRCODE_RES_MASK ; >;
+        < "Wrong DLL call convention." ; ERRCODE_BASIC_BAD_DLL_CALL & ERRCODE_RES_MASK ; >;
+        < "Internal error $(ARG1)." ; ERRCODE_BASIC_INTERNAL_ERROR & ERRCODE_RES_MASK ; >;
+        < "Invalid file name or file number." ; ERRCODE_BASIC_BAD_CHANNEL & ERRCODE_RES_MASK ; >;
+        < "File not found." ; ERRCODE_BASIC_FILE_NOT_FOUND & ERRCODE_RES_MASK ; >;
+        < "Incorrect file mode." ; ERRCODE_BASIC_BAD_FILE_MODE & ERRCODE_RES_MASK ; >;
+        < "File already open." ; ERRCODE_BASIC_FILE_ALREADY_OPEN & ERRCODE_RES_MASK ; >;
+        < "Device I/O error." ; ERRCODE_BASIC_IO_ERROR & ERRCODE_RES_MASK ; >;
+        < "File already exists." ; ERRCODE_BASIC_FILE_EXISTS & ERRCODE_RES_MASK ; >;
+        < "Incorrect record length." ; ERRCODE_BASIC_BAD_RECORD_LENGTH & ERRCODE_RES_MASK ; >;
+        < "Disk or hard drive full." ; ERRCODE_BASIC_DISK_FULL & ERRCODE_RES_MASK ; >;
+        < "Reading exceeds EOF." ; ERRCODE_BASIC_READ_PAST_EOF & ERRCODE_RES_MASK ; >;
+        < "Incorrect record number." ; ERRCODE_BASIC_BAD_RECORD_NUMBER & ERRCODE_RES_MASK ; >;
+        < "Too many files." ; ERRCODE_BASIC_TOO_MANY_FILES & ERRCODE_RES_MASK ; >;
+        < "Device not available." ; ERRCODE_BASIC_NO_DEVICE & ERRCODE_RES_MASK ; >;
+        < "Access denied." ; ERRCODE_BASIC_ACCESS_DENIED & ERRCODE_RES_MASK ; >;
+        < "Disk not ready." ; ERRCODE_BASIC_NOT_READY & ERRCODE_RES_MASK ; >;
+        < "Not implemented." ; ERRCODE_BASIC_NOT_IMPLEMENTED & ERRCODE_RES_MASK ; >;
+        < "Renaming on different drives impossible." ; ERRCODE_BASIC_DIFFERENT_DRIVE & ERRCODE_RES_MASK ; >;
+        < "Path/File access error." ; ERRCODE_BASIC_ACCESS_ERROR & ERRCODE_RES_MASK ; >;
+        < "Path not found." ; ERRCODE_BASIC_PATH_NOT_FOUND & ERRCODE_RES_MASK ; >;
+        < "Object variable not set." ; ERRCODE_BASIC_NO_OBJECT & ERRCODE_RES_MASK ; >;
+        < "Invalid string pattern." ; ERRCODE_BASIC_BAD_PATTERN & ERRCODE_RES_MASK ; >;
+        < "Use of zero not permitted." ; ERRCODE_BASIC_IS_NULL & ERRCODE_RES_MASK ; >;
+        < "DDE Error." ; ERRCODE_BASIC_DDE_ERROR & ERRCODE_RES_MASK ; >;
+        < "Awaiting response to DDE connection." ; ERRCODE_BASIC_DDE_WAITINGACK & ERRCODE_RES_MASK ; >;
+        < "No DDE channels available." ; ERRCODE_BASIC_DDE_OUTOFCHANNELS & ERRCODE_RES_MASK ; >;
+        < "No application responded to DDE connect initiation." ; ERRCODE_BASIC_DDE_NO_RESPONSE & ERRCODE_RES_MASK ; >;
+        < "Too many applications responded to DDE connect initiation." ; ERRCODE_BASIC_DDE_MULT_RESPONSES & ERRCODE_RES_MASK ; >;
+        < "DDE channel locked." ; ERRCODE_BASIC_DDE_CHANNEL_LOCKED & ERRCODE_RES_MASK ; >;
+        < "External application cannot execute DDE operation." ; ERRCODE_BASIC_DDE_NOTPROCESSED & ERRCODE_RES_MASK ; >;
+        < "Timeout while waiting for DDE response." ; ERRCODE_BASIC_DDE_TIMEOUT & ERRCODE_RES_MASK ; >;
+        < "User pressed ESCAPE during DDE operation." ; ERRCODE_BASIC_DDE_USER_INTERRUPT & ERRCODE_RES_MASK ; >;
+        < "External application busy." ; ERRCODE_BASIC_DDE_BUSY & ERRCODE_RES_MASK ; >;
+        < "DDE operation without data." ; ERRCODE_BASIC_DDE_NO_DATA & ERRCODE_RES_MASK ; >;
+        < "Data are in wrong format." ; ERRCODE_BASIC_DDE_WRONG_DATA_FORMAT & ERRCODE_RES_MASK ; >;
+        < "External application has been terminated." ; ERRCODE_BASIC_DDE_PARTNER_QUIT & ERRCODE_RES_MASK ; >;
+        < "DDE connection interrupted or modified." ; ERRCODE_BASIC_DDE_CONV_CLOSED & ERRCODE_RES_MASK ; >;
+        < "DDE method invoked with no channel open." ; ERRCODE_BASIC_DDE_NO_CHANNEL & ERRCODE_RES_MASK ; >;
+        < "Invalid DDE link format." ; ERRCODE_BASIC_DDE_INVALID_LINK & ERRCODE_RES_MASK ; >;
+        < "DDE message has been lost." ; ERRCODE_BASIC_DDE_QUEUE_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "Paste link already performed." ; ERRCODE_BASIC_DDE_LINK_ALREADY_EST & ERRCODE_RES_MASK ; >;
+        < "Link mode cannot be set due to invalid link topic." ; ERRCODE_BASIC_DDE_LINK_INV_TOPIC & ERRCODE_RES_MASK ; >;
+        < "DDE requires the DDEML.DLL file." ; ERRCODE_BASIC_DDE_DLL_NOT_FOUND & ERRCODE_RES_MASK ; >;
+        < "Module cannot be loaded; invalid format." ; ERRCODE_BASIC_CANNOT_LOAD & ERRCODE_RES_MASK ; >;
+        < "Invalid object index." ; ERRCODE_BASIC_BAD_INDEX & ERRCODE_RES_MASK ; >;
+        < "Object is not available." ; ERRCODE_BASIC_NO_ACTIVE_OBJECT & ERRCODE_RES_MASK ; >;
+        < "Incorrect property value." ; ERRCODE_BASIC_BAD_PROP_VALUE & ERRCODE_RES_MASK ; >;
+        < "This property is read-only." ; ERRCODE_BASIC_PROP_READONLY & ERRCODE_RES_MASK ; >;
+        < "This property is write only." ; ERRCODE_BASIC_PROP_WRITEONLY & ERRCODE_RES_MASK ; >;
+        < "Invalid object reference." ; ERRCODE_BASIC_INVALID_OBJECT & ERRCODE_RES_MASK ; >;
+        < "Property or method not found: $(ARG1)." ; ERRCODE_BASIC_NO_METHOD & ERRCODE_RES_MASK ; >;
+        < "Object required." ; ERRCODE_BASIC_NEEDS_OBJECT & ERRCODE_RES_MASK ; >;
+        < "Invalid use of an object." ; ERRCODE_BASIC_INVALID_USAGE_OBJECT & ERRCODE_RES_MASK ; >;
+        < "OLE Automation is not supported by this object." ; ERRCODE_BASIC_NO_OLE & ERRCODE_RES_MASK ; >;
+        < "This property or method is not supported by the object." ; ERRCODE_BASIC_BAD_METHOD & ERRCODE_RES_MASK ; >;
+        < "OLE Automation Error." ; ERRCODE_BASIC_OLE_ERROR & ERRCODE_RES_MASK ; >;
+        < "This action is not supported by given object." ; ERRCODE_BASIC_BAD_ACTION & ERRCODE_RES_MASK ; >;
+        < "Named arguments are not supported by given object." ; ERRCODE_BASIC_NO_NAMED_ARGS & ERRCODE_RES_MASK ; >;
+        < "The current locale setting is not supported by the given object." ; ERRCODE_BASIC_BAD_LOCALE & ERRCODE_RES_MASK ; >;
+        < "Named argument not found." ; ERRCODE_BASIC_NAMED_NOT_FOUND & ERRCODE_RES_MASK ; >;
+        < "Argument is not optional." ; ERRCODE_BASIC_NOT_OPTIONAL & ERRCODE_RES_MASK ; >;
+        < "Invalid number of arguments." ; ERRCODE_BASIC_WRONG_ARGS & ERRCODE_RES_MASK ; >;
+        < "Object is not a list." ; ERRCODE_BASIC_NOT_A_COLL & ERRCODE_RES_MASK ; >;
+        < "Invalid ordinal number." ; ERRCODE_BASIC_BAD_ORDINAL & ERRCODE_RES_MASK ; >;
+        < "Specified DLL function not found." ; ERRCODE_BASIC_DLLPROC_NOT_FOUND & ERRCODE_RES_MASK ; >;
+        < "Invalid clipboard format." ; ERRCODE_BASIC_BAD_CLIPBD_FORMAT & ERRCODE_RES_MASK ; >;
+        < "Object does not have this property." ; ERRCODE_BASIC_PROPERTY_NOT_FOUND & ERRCODE_RES_MASK ; >;
+        < "Object does not have this method." ; ERRCODE_BASIC_METHOD_NOT_FOUND & ERRCODE_RES_MASK ; >;
+        < "Required argument lacking." ; ERRCODE_BASIC_ARG_MISSING & ERRCODE_RES_MASK ; >;
+        < "Invalid number of arguments." ; ERRCODE_BASIC_BAD_NUMBER_OF_ARGS & ERRCODE_RES_MASK ; >;
+        < "Error executing a method." ; ERRCODE_BASIC_METHOD_FAILED & ERRCODE_RES_MASK ; >;
+        < "Unable to set property." ; ERRCODE_BASIC_SETPROP_FAILED & ERRCODE_RES_MASK ; >;
+        < "Unable to determine property." ; ERRCODE_BASIC_GETPROP_FAILED & ERRCODE_RES_MASK ; >;
+         // Compiler errors. These are not runtime errors.
+        < "Unexpected symbol: $(ARG1)." ; ERRCODE_BASIC_UNEXPECTED & ERRCODE_RES_MASK ; >;
+        < "Expected: $(ARG1)." ; ERRCODE_BASIC_EXPECTED & ERRCODE_RES_MASK ; >;
+        < "Symbol expected." ; ERRCODE_BASIC_SYMBOL_EXPECTED & ERRCODE_RES_MASK ; >;
+        < "Variable expected." ; ERRCODE_BASIC_VAR_EXPECTED & ERRCODE_RES_MASK ; >;
+        < "Label expected." ; ERRCODE_BASIC_LABEL_EXPECTED & ERRCODE_RES_MASK ; >;
+        < "Value cannot be applied." ; ERRCODE_BASIC_LVALUE_EXPECTED & ERRCODE_RES_MASK ; >;
+        < "Variable $(ARG1) already defined." ; ERRCODE_BASIC_VAR_DEFINED & ERRCODE_RES_MASK ; >;
+        < "Sub procedure or function procedure $(ARG1) already defined." ; ERRCODE_BASIC_PROC_DEFINED & ERRCODE_RES_MASK ; >;
+        < "Label $(ARG1) already defined." ; ERRCODE_BASIC_LABEL_DEFINED & ERRCODE_RES_MASK ; >;
+        < "Variable $(ARG1) not found." ; ERRCODE_BASIC_UNDEF_VAR & ERRCODE_RES_MASK ; >;
+        < "Array or procedure $(ARG1) not found." ; ERRCODE_BASIC_UNDEF_ARRAY & ERRCODE_RES_MASK ; >;
+        < "Procedure $(ARG1) not found." ; ERRCODE_BASIC_UNDEF_PROC & ERRCODE_RES_MASK ; >;
+        < "Label $(ARG1) undefined." ; ERRCODE_BASIC_UNDEF_LABEL & ERRCODE_RES_MASK ; >;
+        < "Unknown data type $(ARG1)." ; ERRCODE_BASIC_UNDEF_TYPE & ERRCODE_RES_MASK ; >;
+        < "Exit $(ARG1) expected." ; ERRCODE_BASIC_BAD_EXIT & ERRCODE_RES_MASK ; >;
+        < "Statement block still open: $(ARG1) missing." ; ERRCODE_BASIC_BAD_BLOCK & ERRCODE_RES_MASK ; >;
+        < "Parentheses do not match." ; ERRCODE_BASIC_BAD_BRACKETS & ERRCODE_RES_MASK ; >;
+        < "Symbol $(ARG1) already defined differently." ; ERRCODE_BASIC_BAD_DECLARATION & ERRCODE_RES_MASK ; >;
+        < "Parameters do not correspond to procedure." ; ERRCODE_BASIC_BAD_PARAMETERS & ERRCODE_RES_MASK ; >;
+        < "Invalid character in number." ; ERRCODE_BASIC_BAD_CHAR_IN_NUMBER & ERRCODE_RES_MASK ; >;
+        < "Array must be dimensioned." ; ERRCODE_BASIC_MUST_HAVE_DIMS & ERRCODE_RES_MASK ; >;
+        < "Else/Endif without If." ; ERRCODE_BASIC_NO_IF & ERRCODE_RES_MASK ; >;
+        < "$(ARG1) not allowed within a procedure." ; ERRCODE_BASIC_NOT_IN_SUBR & ERRCODE_RES_MASK ; >;
+        < "$(ARG1) not allowed outside a procedure." ; ERRCODE_BASIC_NOT_IN_MAIN & ERRCODE_RES_MASK ; >;
+        < "Dimension specifications do not match." ; ERRCODE_BASIC_WRONG_DIMS & ERRCODE_RES_MASK ; >;
+        < "Unknown option: $(ARG1)." ; ERRCODE_BASIC_BAD_OPTION & ERRCODE_RES_MASK ; >;
+        < "Constant $(ARG1) redefined." ; ERRCODE_BASIC_CONSTANT_REDECLARED & ERRCODE_RES_MASK ; >;
+        < "Program too large." ; ERRCODE_BASIC_PROG_TOO_LARGE & ERRCODE_RES_MASK ; >;
+        < "Strings or arrays not permitted." ; ERRCODE_BASIC_NO_STRINGS_ARRAYS & ERRCODE_RES_MASK ; >;
+        < "An exception occurred $(ARG1)." ; ERRCODE_BASIC_EXCEPTION & ERRCODE_RES_MASK ; >;
+        < "This array is fixed or temporarily locked." ; ERRCODE_BASIC_ARRAY_FIX & ERRCODE_RES_MASK ; >;
+        < "Out of string space." ; ERRCODE_BASIC_STRING_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "Expression Too Complex." ; ERRCODE_BASIC_EXPR_TOO_COMPLEX & ERRCODE_RES_MASK ; >;
+        < "Can't perform requested operation." ; ERRCODE_BASIC_OPER_NOT_PERFORM & ERRCODE_RES_MASK ; >;
+        < "Too many DLL application clients." ; ERRCODE_BASIC_TOO_MANY_DLL & ERRCODE_RES_MASK ; >;
+        < "For loop not initialized." ; ERRCODE_BASIC_LOOP_NOT_INIT & ERRCODE_RES_MASK ; >;
+        < "$(ARG1)" ; ERRCODE_BASIC_COMPAT & ERRCODE_RES_MASK ; >;
     };
 };
+
  // Hinweis: IDS_SBERR_TERMINATED = IDS_SBERR_START+2000.
 String IDS_SBERR_TERMINATED
 {
diff --git a/sc/source/ui/src/scerrors.src b/sc/source/ui/src/scerrors.src
index 593ac86..a6662c0 100644
--- a/sc/source/ui/src/scerrors.src
+++ b/sc/source/ui/src/scerrors.src
@@ -20,159 +20,87 @@
 #include "scerrors.hxx"
 #include "sc.hrc"
 
-Resource RID_ERRHDLSC
+StringArray RID_ERRHDLSC
 {
+    ItemList [ en-US ] =
+    {
+        // ERRORS -----------------------------------------------------
+        < "Impossible to connect to the file." ;
+          SCERR_IMPORT_CONNECT & ERRCODE_RES_MASK ; >;
+        < "File could not be opened." ;
+          SCERR_IMPORT_OPEN & ERRCODE_RES_MASK ; >;
+        < "An unknown error has occurred." ;
+          SCERR_IMPORT_UNKNOWN & ERRCODE_RES_MASK ; >;
+        < "Not enough memory while importing." ;
+          SCERR_IMPORT_OUTOFMEM & ERRCODE_RES_MASK ; >;
+        < "Unknown Lotus1-2-3 file format." ;
+          SCERR_IMPORT_UNKNOWN_WK & ERRCODE_RES_MASK ; >;
+        < "Error in file structure while importing." ;
+          SCERR_IMPORT_FORMAT & ERRCODE_RES_MASK ; >;
+        < "There is no filter available for this file type." ;
+          SCERR_IMPORT_NI & ERRCODE_RES_MASK ; >;
+        < "Unknown or unsupported Excel file format." ;
+          SCERR_IMPORT_UNKNOWN_BIFF & ERRCODE_RES_MASK ; >;
+        < "Excel file format not yet implemented." ;
+          SCERR_IMPORT_NI_BIFF & ERRCODE_RES_MASK ; >;
+        < "This file is password-protected." ;
+          SCERR_IMPORT_FILEPASSWD & ERRCODE_RES_MASK ; >;
+        < "Internal import error." ;
+          SCERR_IMPORT_INTERNAL & ERRCODE_RES_MASK ; >;
+        < "The file contains data after row 8192 and therefore can not be read." ;
+          SCERR_IMPORT_8K_LIMIT & ERRCODE_RES_MASK ; >;
+        < "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col).";
+          SCERR_IMPORT_FILE_ROWCOL & ERRCODE_RES_MASK ; >;
+        < "File format error found at $(ARG1)(row,col)." ;
+          SCERR_IMPORT_FORMAT_ROWCOL & ERRCODE_RES_MASK ; >;
 
-     // ERRORS -----------------------------------------------------
+        // Export ----------------------------------------------------
+        < "Connection to the file could not be established." ;
+          SCERR_EXPORT_CONNECT & ERRCODE_RES_MASK ; >;
+        < "Data could not be written." ;
+          SCERR_EXPORT_DATA & ERRCODE_RES_MASK ; >;
+        < "$(ARG1)" ;
+          SCERR_EXPORT_SQLEXCEPTION & ERRCODE_RES_MASK ; >;
+        < "Cell $(ARG1) contains characters that are not representable in the selected target character set \"$(ARG2)\"." ;
+          SCERR_EXPORT_ENCODING & ERRCODE_RES_MASK ; >;
+        < "Cell $(ARG1) contains a string that is longer in the selected target character set \"$(ARG2)\" than the given field width." ;
+          SCERR_EXPORT_FIELDWIDTH & ERRCODE_RES_MASK ; >;
 
-    String SCERR_IMPORT_CONNECT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Impossible to connect to the file." ;
-    };
-    String SCERR_IMPORT_OPEN & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "File could not be opened." ;
-    };
-    String SCERR_IMPORT_UNKNOWN & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "An unknown error has occurred." ;
-    };
-    String SCERR_IMPORT_OUTOFMEM & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Not enough memory while importing." ;
-    };
-    String SCERR_IMPORT_UNKNOWN_WK & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Unknown Lotus1-2-3 file format." ;
-    };
-    String SCERR_IMPORT_FORMAT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Error in file structure while importing." ;
-    };
-    String SCERR_IMPORT_NI & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "There is no filter available for this file type." ;
-    };
-    String SCERR_IMPORT_UNKNOWN_BIFF & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Unknown or unsupported Excel file format." ;
-    };
-    String SCERR_IMPORT_NI_BIFF & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Excel file format not yet implemented." ;
-    };
-    String SCERR_IMPORT_FILEPASSWD & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "This file is password-protected." ;
-    };
-    String SCERR_IMPORT_INTERNAL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Internal import error." ;
-    };
-    String SCERR_IMPORT_8K_LIMIT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The file contains data after row 8192 and therefore can not be read." ;
-    };
-    String SCERR_IMPORT_FILE_ROWCOL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col).";
-    };
-    String SCERR_IMPORT_FORMAT_ROWCOL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "File format error found at $(ARG1)(row,col)." ;
-    };
-
-     // Export ----------------------------------------------------
-    String SCERR_EXPORT_CONNECT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Connection to the file could not be established." ;
-    };
-    String SCERR_EXPORT_DATA & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Data could not be written." ;
-    };
-    String SCERR_EXPORT_SQLEXCEPTION & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ARG1)" ;
-    };
-    String SCERR_EXPORT_ENCODING & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Cell $(ARG1) contains characters that are not representable in the selected target character set \"$(ARG2)\"." ;
-    };
-    String SCERR_EXPORT_FIELDWIDTH & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Cell $(ARG1) contains a string that is longer in the selected target character set \"$(ARG2)\" than the given field width." ;
-    };
-
-     // WARNINGS ---------------------------------------------------
-
-    String SCWARN_EXPORT_ASCII & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Only the active sheet was saved." ;
-    };
-    String SCWARN_IMPORT_RANGE_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The maximum number of rows has been exceeded. Excess rows were not imported!" ;
-    };
-    String SCWARN_IMPORT_ROW_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded." ;
-    };
-    String SCWARN_IMPORT_COLUMN_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded." ;
-    };
-    String SCWARN_IMPORT_SHEET_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Not all sheets have been loaded because the maximum number of sheets was exceeded.\n\nPlease be warned that re-saving this document will permanently delete those sheets that have not been loaded!" ;
-    };
-    String SCWARN_IMPORT_CELL_OVERFLOW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The data could not be loaded completely because the maximum number of characters per cell was exceeded." ;
-    };
-    String SCWARN_IMPORT_OPEN_FM3 & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Corresponding FM3-File could not be opened." ;
-    };
-    String SCWARN_IMPORT_WRONG_FM3 & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Error in file structure of corresponding FM3-File." ;
-    };
-    String SCWARN_CORE_HARD_RECALC & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Document too complex for automatic calculation. Press F9 to recalculate." ;
-    };
-    String SCWARN_EXPORT_MAXROW & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The document contains more rows than supported in the selected format.\nAdditional rows were not saved." ;
-    };
-    String SCWARN_EXPORT_MAXCOL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The document contains more columns than supported in the selected format.\nAdditional columns were not saved." ;
-    };
-    String SCWARN_EXPORT_MAXTAB & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The document contains more sheets than supported in the selected format.\nAdditional sheets were not saved." ;
-    };
-    String SCWARN_IMPORT_INFOLOST & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The document contains information not recognized by this program version.\nResaving the document will delete this information!" ;
-    };
-    String SCWARN_EXPORT_DATALOST & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Not all cell contents could be saved in the specified format." ;
-    };
-    String SCWARN_EXPORT_NONCONVERTIBLE_CHARS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The following characters could not be converted to the selected character set\nand were written as Ӓ surrogates:\n\n$(ARG1)";
-    };
-    String SCWARN_IMPORT_FILE_ROWCOL & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col).";
-    };
-    String SCWARN_IMPORT_FEATURES_LOST & ERRCODE_RES_MASK
-    {
-        Text [ en-US] = "Not all attributes could be read." ;
+        // WARNINGS ---------------------------------------------------
+        < "Only the active sheet was saved." ;
+          SCWARN_EXPORT_ASCII & ERRCODE_RES_MASK ; >;
+        < "The maximum number of rows has been exceeded. Excess rows were not imported!" ;
+          SCWARN_IMPORT_RANGE_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "The data could not be loaded completely because the maximum number of rows per sheet was exceeded." ;
+          SCWARN_IMPORT_ROW_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "The data could not be loaded completely because the maximum number of columns per sheet was exceeded." ;
+          SCWARN_IMPORT_COLUMN_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "Not all sheets have been loaded because the maximum number of sheets was exceeded.\n\nPlease be warned that re-saving this document will permanently delete those sheets that have not been loaded!" ;
+          SCWARN_IMPORT_SHEET_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "The data could not be loaded completely because the maximum number of characters per cell was exceeded." ;
+          SCWARN_IMPORT_CELL_OVERFLOW & ERRCODE_RES_MASK ; >;
+        < "Corresponding FM3-File could not be opened." ;
+          SCWARN_IMPORT_OPEN_FM3 & ERRCODE_RES_MASK ; >;
+        < "Error in file structure of corresponding FM3-File." ;
+          SCWARN_IMPORT_WRONG_FM3 & ERRCODE_RES_MASK ; >;
+        < "Document too complex for automatic calculation. Press F9 to recalculate." ;
+          SCWARN_CORE_HARD_RECALC & ERRCODE_RES_MASK ; >;
+        < "The document contains more rows than supported in the selected format.\nAdditional rows were not saved." ;
+          SCWARN_EXPORT_MAXROW & ERRCODE_RES_MASK ; >;
+        < "The document contains more columns than supported in the selected format.\nAdditional columns were not saved." ;
+          SCWARN_EXPORT_MAXCOL & ERRCODE_RES_MASK ; >;
+        < "The document contains more sheets than supported in the selected format.\nAdditional sheets were not saved." ;
+          SCWARN_EXPORT_MAXTAB & ERRCODE_RES_MASK ; >;
+        < "The document contains information not recognized by this program version.\nResaving the document will delete this information!" ;
+          SCWARN_IMPORT_INFOLOST & ERRCODE_RES_MASK ; >;
+        < "Not all cell contents could be saved in the specified format." ;
+          SCWARN_EXPORT_DATALOST & ERRCODE_RES_MASK ; >;
+        < "The following characters could not be converted to the selected character set\nand were written as Ӓ surrogates:\n\n$(ARG1)";
+          SCWARN_EXPORT_NONCONVERTIBLE_CHARS & ERRCODE_RES_MASK ; >;
+        < "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col).";
+          SCWARN_IMPORT_FILE_ROWCOL & ERRCODE_RES_MASK ; >;
+        < "Not all attributes could be read." ;
+          SCWARN_IMPORT_FEATURES_LOST & ERRCODE_RES_MASK ; >;
     };
 };
 
diff --git a/sd/source/core/glob.src b/sd/source/core/glob.src
index 8cb0270..0f8629f 100644
--- a/sd/source/core/glob.src
+++ b/sd/source/core/glob.src
@@ -348,19 +348,16 @@ String STR_SAVE_DOC
 #define ERR_CODE( class, err )  (class | (err - ERROR_SD_BASE))
 #define WARN_CODE( class, err ) (class | ( err - WARN_SD_BASE))
 
-Resource RID_SD_ERRHDL
+StringArray RID_SD_ERRHDL
 {
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_ROWCOL )
+    ItemList [ en-US ] =
     {
-        Text [ en-US ] = "File format error found at $(ARG1)(row,col)." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_FILE_ROWCOL )
-    {
-        Text [ en-US ] = "Format error discovered in the file in sub-document $(ARG1) at position $(ARG2)(row,col).";
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , WARN_FORMAT_FILE_ROWCOL )
-    {
-        Text [ en-US ] = "Format error discovered in the file in sub-document $(ARG1) at position $(ARG2)(row,col).";
+        < "File format error found at $(ARG1)(row,col)." ;
+          ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_ROWCOL ) ; >;
+        < "Format error discovered in the file in sub-document $(ARG1) at position $(ARG2)(row,col).";
+          ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_FILE_ROWCOL ) ; >;
+        < "Format error discovered in the file in sub-document $(ARG1) at position $(ARG2)(row,col).";
+          ERR_CODE ( ERRCODE_CLASS_READ , WARN_FORMAT_FILE_ROWCOL ) ; >;
     };
 };
 
diff --git a/svtools/source/dialogs/so3res.src b/svtools/source/dialogs/so3res.src
index fec8d89..38dcb17 100644
--- a/svtools/source/dialogs/so3res.src
+++ b/svtools/source/dialogs/so3res.src
@@ -22,152 +22,89 @@
 #include <svtools/soerr.hxx>
 #define S_MAX   0x7fff
 
-Resource RID_SO_ERROR_HANDLER
+StringArray RID_SO_ERROR_HANDLER
 {
-    String ERRCODE_SO_GENERALERROR&S_MAX
-    {
-        Text [ en-US ] = "General OLE error." ;
-    };
-    String ERRCODE_SO_CANT_BINDTOSOURCE&S_MAX
-    {
-        Text [ en-US ] = "The connection to the object cannot be established." ;
-    };
-    String ERRCODE_SO_NOCACHE_UPDATED&S_MAX
-    {
-        Text [ en-US ] = "No cache files were updated." ;
-    };
-    String ERRCODE_SO_SOMECACHES_NOTUPDATED&S_MAX
-    {
-        Text [ en-US ] = "Some cache files were not updated." ;
-    };
-    String ERRCODE_SO_MK_UNAVAILABLE&S_MAX
-    {
-        Text [ en-US ] = "Status of object cannot be determined in a timely manner." ;
-    };
-    String ERRCODE_SO_E_CLASSDIFF&S_MAX
-    {
-        Text [ en-US ] = "Source of the OLE link has been converted." ;
-    };
-    String ERRCODE_SO_MK_NO_OBJECT&S_MAX
-    {
-        Text [ en-US ] = "The object could not be found." ;
-    };
-    String ERRCODE_SO_MK_EXCEEDED_DEADLINE&S_MAX
-    {
-        Text [ en-US ] = "The process could not be completed within the specified time period." ;
-    };
-    String ERRCODE_SO_MK_CONNECT_MANUALLY&S_MAX
-    {
-        Text [ en-US ] = "OLE could not connect to a network device (server)." ;
-    };
-    String ERRCODE_SO_MK_INTERMEDIATE_INTERFACE_NOT_SUPPORTED&S_MAX
-    {
-        Text [ en-US ] = "The object found does not support the interface required for the desired operation." ;
-    };
-    String ERRCODE_SO_NO_INTERFACE&S_MAX
-    {
-        Text [ en-US ] = "Interface not supported." ;
-    };
-    String ERRCODE_SO_OUT_OF_MEMORY&S_MAX
-    {
-        Text [ en-US ] = "Insufficient memory." ;
-    };
-    String ERRCODE_SO_MK_SYNTAX&S_MAX
-    {
-        Text [ en-US ] = "The connection name could not be processed." ;
-    };
-    String ERRCODE_SO_MK_REDUCED_TO_SELF&S_MAX
-    {
-        Text [ en-US ] = "The connection name could not be reduced further." ;
-    };
-    String ERRCODE_SO_MK_NO_INVERSE&S_MAX
-    {
-        Text [ en-US ] = "The connection name has no inverse." ;
-    };
-    String ERRCODE_SO_MK_NO_PREFIX&S_MAX
-    {
-        Text [ en-US ] = "No common prefix exists." ;
-    };
-    String ERRCODE_SO_MK_HIM&S_MAX
-    {
-        Text [ en-US ] = "The connection name is contained in the other one." ;
-    };
-    String ERRCODE_SO_MK_US&S_MAX
-    {
-        Text [ en-US ] = "The connection names (the receiver and the other moniker) are identical." ;
-    };
-    String ERRCODE_SO_MK_ME&S_MAX
-    {
-        Text [ en-US ] = "The connection name is contained in the other one." ;
-    };
-    String ERRCODE_SO_MK_NOT_BINDABLE&S_MAX
-    {
-        Text [ en-US ] = "The connection name cannot be connected. This is a relative name." ;
-    };
-    String ERRCODE_SO_NOT_IMPLEMENTED&S_MAX
-    {
-        Text [ en-US ] = "Operation not implemented." ;
-    };
-    String ERRCODE_SO_MK_NO_STORAGE&S_MAX
-    {
-        Text [ en-US ] = "No storage." ;
-    };
-    String ERRCODE_SO_FALSE&S_MAX
-    {
-        Text [ en-US ] = "False." ;
-    };
-    String ERRCODE_SO_MK_NEED_GENERIC&S_MAX
-    {
-        Text [ en-US ] = "Monikers must be composed generically." ;
-    };
-    String ERRCODE_SO_PENDING&S_MAX
-    {
-        Text [ en-US ] = "Data not available at this time." ;
-    };
-    String ERRCODE_SO_NOT_INPLACEACTIVE & S_MAX
-    {
-        Text [ en-US ] = "Object could not be activated InPlace." ;
-    };
-    String ERRCODE_SO_LINDEX & S_MAX
-    {
-        Text [ en-US ] = "Invalid index." ;
-    };
-    String ERRCODE_SO_CANNOT_DOVERB_NOW & S_MAX
-    {
-        Text [ en-US ] = "The action cannot be executed in the object's current state." ;
-    };
-    String ERRCODE_SO_OLEOBJ_INVALIDHWND & S_MAX
-    {
-        Text [ en-US ] = "An invalid window was passed when activated." ;
-    };
-    String ERRCODE_SO_NOVERBS & S_MAX
-    {
-        Text [ en-US ] = "The object does not support any actions." ;
-    };
-    String ERRCODE_SO_INVALIDVERB & S_MAX
-    {
-        Text [ en-US ] = "The action is not defined. The default action will be executed." ;
-    };
-    String ERRCODE_SO_MK_CONNECT & S_MAX
-    {
-        Text [ en-US ] = "A link to the network could not be re-established." ;
-    };
-    String ERRCODE_SO_NOTIMPL & S_MAX
-    {
-        Text [ en-US ] = "Object does not support this action." ;
-    };
-    String ERRCODE_SO_MK_CANTOPENFILE & S_MAX
-    {
-        Text [ en-US ] = "The specified file could not be opened." ;
+    ItemList [ en-US ] =
+    {
+        < "General OLE error." ;
+          ERRCODE_SO_GENERALERROR&S_MAX ; >;
+        < "The connection to the object cannot be established." ;
+          ERRCODE_SO_CANT_BINDTOSOURCE&S_MAX ; >;
+        < "No cache files were updated." ;
+          ERRCODE_SO_NOCACHE_UPDATED&S_MAX ; >;
+        < "Some cache files were not updated." ;
+          ERRCODE_SO_SOMECACHES_NOTUPDATED&S_MAX ; >;
+        < "Status of object cannot be determined in a timely manner." ;
+          ERRCODE_SO_MK_UNAVAILABLE&S_MAX ; >;
+        < "Source of the OLE link has been converted." ;
+          ERRCODE_SO_E_CLASSDIFF&S_MAX ; >;
+        < "The object could not be found." ;
+          ERRCODE_SO_MK_NO_OBJECT&S_MAX ; >;
+        < "The process could not be completed within the specified time period." ;
+          ERRCODE_SO_MK_EXCEEDED_DEADLINE&S_MAX ; >;
+        < "OLE could not connect to a network device (server)." ;
+          ERRCODE_SO_MK_CONNECT_MANUALLY&S_MAX ; >;
+        < "The object found does not support the interface required for the desired operation." ;
+          ERRCODE_SO_MK_INTERMEDIATE_INTERFACE_NOT_SUPPORTED&S_MAX ; >;
+        < "Interface not supported." ;
+          ERRCODE_SO_NO_INTERFACE&S_MAX ; >;
+        < "Insufficient memory." ;
+          ERRCODE_SO_OUT_OF_MEMORY&S_MAX ; >;
+        < "The connection name could not be processed." ;
+          ERRCODE_SO_MK_SYNTAX&S_MAX ; >;
+        < "The connection name could not be reduced further." ;
+          ERRCODE_SO_MK_REDUCED_TO_SELF&S_MAX ; >;
+        < "The connection name has no inverse." ;
+          ERRCODE_SO_MK_NO_INVERSE&S_MAX ; >;
+        < "No common prefix exists." ;
+          ERRCODE_SO_MK_NO_PREFIX&S_MAX ; >;
+        < "The connection name is contained in the other one." ;
+          ERRCODE_SO_MK_HIM&S_MAX ; >;
+        < "The connection names (the receiver and the other moniker) are identical." ;
+          ERRCODE_SO_MK_US&S_MAX ; >;
+        < "The connection name is contained in the other one." ;
+          ERRCODE_SO_MK_ME&S_MAX ; >;
+        < "The connection name cannot be connected. This is a relative name." ;
+          ERRCODE_SO_MK_NOT_BINDABLE&S_MAX ; >;
+        < "Operation not implemented." ;
+          ERRCODE_SO_NOT_IMPLEMENTED&S_MAX ; >;
+        < "No storage." ;
+          ERRCODE_SO_MK_NO_STORAGE&S_MAX ; >;
+        < "False." ;
+          ERRCODE_SO_FALSE&S_MAX ; >;
+        < "Monikers must be composed generically." ;
+          ERRCODE_SO_MK_NEED_GENERIC&S_MAX ; >;
+        < "Data not available at this time." ;
+          ERRCODE_SO_PENDING&S_MAX ; >;
+        < "Object could not be activated InPlace." ;
+          ERRCODE_SO_NOT_INPLACEACTIVE & S_MAX ; >;
+        < "Invalid index." ;
+          ERRCODE_SO_LINDEX & S_MAX ; >;
+        < "The action cannot be executed in the object's current state." ;
+          ERRCODE_SO_CANNOT_DOVERB_NOW & S_MAX ; >;
+        < "An invalid window was passed when activated." ;
+          ERRCODE_SO_OLEOBJ_INVALIDHWND & S_MAX ; >;
+        < "The object does not support any actions." ;
+          ERRCODE_SO_NOVERBS & S_MAX ; >;
+        < "The action is not defined. The default action will be executed." ;
+          ERRCODE_SO_INVALIDVERB & S_MAX ; >;
+        < "A link to the network could not be re-established." ;
+          ERRCODE_SO_MK_CONNECT & S_MAX ; >;
+        < "Object does not support this action." ;
+          ERRCODE_SO_NOTIMPL & S_MAX ; >;
+        < "The specified file could not be opened." ;
+          ERRCODE_SO_MK_CANTOPENFILE & S_MAX ; >;
     };
 };
-Resource RID_SO_ERRCTX
+
+StringArray RID_SO_ERRCTX
 {
-    String ERRCTX_SO_DOVERB
+    ItemList [ en-US ] =
     {
-        Text [ en-US ] = "$(ERR) activating object" ;
+        < "$(ERR) activating object" ; ERRCTX_SO_DOVERB ; >;
     };
 };
+
 String STR_ERROR_OBJNOCREATE
 {
     Text [ en-US ] = "Object % could not be inserted." ;
diff --git a/svtools/source/misc/ehdl.cxx b/svtools/source/misc/ehdl.cxx
index 4285b63..16503aa 100644
--- a/svtools/source/misc/ehdl.cxx
+++ b/svtools/source/misc/ehdl.cxx
@@ -19,6 +19,7 @@
 
 #include <osl/mutex.hxx>
 #include <tools/rcid.h>
+#include <tools/resary.hxx>
 #include <tools/wintypes.hxx>
 #include <vcl/msgbox.hxx>
 #include <vcl/svapp.hxx>
@@ -218,26 +219,6 @@ ResString::ResString(ResId & rId)
     pResMgr->PopContext();
 }
 
-struct ErrorResource_Impl : private Resource
-
-/*  [Description]
-
-    Helpclass for access to string sub-resources of a resource
-    */
-
-{
-    ResId aResId;
-
-    ErrorResource_Impl(ResId& rErrIdP, sal_uInt16 nId)
-        : Resource(rErrIdP),aResId(nId,*rErrIdP.GetResMgr()){}
-
-    ~ErrorResource_Impl() { FreeResource(); }
-
-    ResString GetResString() { return ResString( aResId ); }
-    operator bool()          { return IsAvailableRes(aResId.SetRT(RSC_STRING)); }
-
-};
-
 void SfxErrorHandler::GetClassString(sal_uLong lClassId, OUString &rStr)
 
 /*  [Description]
@@ -251,11 +232,11 @@ void SfxErrorHandler::GetClassString(sal_uLong lClassId, OUString &rStr)
     std::unique_ptr<ResMgr> pResMgr(ResMgr::CreateResMgr("ofa", Application::GetSettings().GetUILanguageTag() ));
     if( pResMgr )
     {
-        ResId aId(RID_ERRHDL, *pResMgr );
-        ErrorResource_Impl aEr(aId, (sal_uInt16)lClassId);
-        if(aEr)
+        ResStringArray aEr(ResId(RID_ERRHDL, *pResMgr));
+        sal_uInt32 nErrIdx = aEr.FindIndex((sal_uInt16)lClassId);
+        if (nErrIdx != RESARRAY_INDEX_NOTFOUND)
         {
-            rStr = aEr.GetResString().GetString();
+            rStr = aEr.GetString(nErrIdx);
         }
     }
 }
@@ -274,19 +255,16 @@ bool SfxErrorHandler::GetErrorString(sal_uLong lErrId, OUString &rStr) const
 
     bool bRet = false;
     rStr = SvtResId(RID_ERRHDL_CLASS).toString();
-    ResId aResId(nId, *pMgr);
 
+    ResStringArray aEr(ResId(nId, *pMgr));
+    sal_uInt32 nErrIdx = aEr.FindIndex((sal_uInt16)lErrId);
+    if (nErrIdx != RESARRAY_INDEX_NOTFOUND)
     {
-        ErrorResource_Impl aEr(aResId, (sal_uInt16)lErrId);
-        if(aEr)
-        {
-            ResString aErrorString(aEr.GetResString());
-            rStr = rStr.replaceAll("$(ERROR)", aErrorString.GetString());
-            bRet = true;
-        }
-        else
-            bRet = false;
+        rStr = rStr.replaceAll("$(ERROR)", aEr.GetString(nErrIdx));
+        bRet = true;
     }
+    else
+        bRet = false;
 
     if( bRet )
     {
@@ -339,12 +317,11 @@ bool SfxErrorContext::GetString(sal_uLong nErrId, OUString &rStr)
     {
         SolarMutexGuard aGuard;
 
-        ResId aResId( nResId, *pMgr );
-
-        ErrorResource_Impl aTestEr( aResId, nCtxId );
-        if ( aTestEr )
+        ResStringArray aTestEr(ResId(nResId, *pMgr));
+        sal_uInt32 nErrIdx = aTestEr.FindIndex(nCtxId);
+        if (nErrIdx != RESARRAY_INDEX_NOTFOUND)
         {
-            rStr = aTestEr.GetResString().GetString();
+            rStr = aTestEr.GetString(nErrIdx);
             rStr = rStr.replaceAll("$(ARG1)", aArg1);
             bRet = true;
         }
@@ -357,9 +334,8 @@ bool SfxErrorContext::GetString(sal_uLong nErrId, OUString &rStr)
         if ( bRet )
         {
             sal_uInt16 nId = ( nErrId & ERRCODE_WARNING_MASK ) ? ERRCTX_WARNING : ERRCTX_ERROR;
-            ResId aSfxResId( RID_ERRCTX, *pMgr );
-            ErrorResource_Impl aEr( aSfxResId, nId );
-            rStr = rStr.replaceAll("$(ERR)", aEr.GetResString().GetString());
+            ResStringArray aEr(ResId(RID_ERRCTX, *pMgr));
+            rStr = rStr.replaceAll("$(ERR)", aEr.GetString(nId));
         }
     }
 
diff --git a/svx/source/items/svxerr.src b/svx/source/items/svxerr.src
index 6c164c2..c3adc42 100644
--- a/svx/source/items/svxerr.src
+++ b/svx/source/items/svxerr.src
@@ -23,121 +23,76 @@
 #include <editeng/editerr.hxx>
 
  // Error-Context ---------------------------------------------------------
-Resource RID_SVXERRCTX
+StringArray RID_SVXERRCTX
 {
-    String ERRCTX_SVX_LINGU_THESAURUS&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ERR) executing the thesaurus." ;
-    };
-    String ERRCTX_SVX_LINGU_SPELLING&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ERR) executing the spellcheck." ;
-    };
-    String ERRCTX_SVX_LINGU_HYPHENATION&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ERR) executing the hyphenation." ;
-    };
-    String ERRCTX_SVX_LINGU_DICTIONARY&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ERR) creating a dictionary." ;
-    };
-    String ERRCTX_SVX_BACKGROUND&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ERR) setting background attribute." ;
-    };
-    String ERRCTX_SVX_IMPORT_GRAPHIC&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ERR) loading the graphics." ;
+    ItemList [ en-US ] =
+    {
+        < "$(ERR) executing the thesaurus." ;
+          ERRCTX_SVX_LINGU_THESAURUS&ERRCODE_RES_MASK ; >;
+        < "$(ERR) executing the spellcheck." ;
+          ERRCTX_SVX_LINGU_SPELLING&ERRCODE_RES_MASK ; >;
+        < "$(ERR) executing the hyphenation." ;
+          ERRCTX_SVX_LINGU_HYPHENATION&ERRCODE_RES_MASK ; >;
+        < "$(ERR) creating a dictionary." ;
+          ERRCTX_SVX_LINGU_DICTIONARY&ERRCODE_RES_MASK ; >;
+        < "$(ERR) setting background attribute." ;
+          ERRCTX_SVX_BACKGROUND&ERRCODE_RES_MASK ; >;
+        < "$(ERR) loading the graphics." ;
+          ERRCTX_SVX_IMPORT_GRAPHIC&ERRCODE_RES_MASK ; >;
     };
 };
+
  // Error-Code ------------------------------------------------------------
-Resource RID_SVXERRCODE
+StringArray RID_SVXERRCODE
 {
-    String ERRCODE_SVX_LINGU_THESAURUSNOTEXISTS&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "No thesaurus available for the current language.\nPlease check your installation and install the desired language." ;
-    };
-    String ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "$(ARG1) is not supported by the spellcheck function or is not presently active.\nPlease check your installation and, if necessary, install the required language module\n or activate it under 'Tools - Options -  Language Settings - Writing Aids'.";
-    };
-    String ERRCODE_SVX_LINGU_LINGUNOTEXISTS&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Spellcheck is not available." ;
-    };
-    String ERRCODE_SVX_LINGU_HYPHENNOTEXISTS&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Hyphenation not available." ;
-    };
-    String ERRCODE_SVX_LINGU_DICT_NOTREADABLE&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The custom dictionary $(ARG1) cannot be read." ;
-    };
-    String ERRCODE_SVX_LINGU_DICT_NOTWRITEABLE&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The custom dictionary $(ARG1) cannot be created." ;
-    };
-    String ERRCODE_SVX_GRAPHIC_NOTREADABLE&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The graphic $(ARG1) could not be found." ;
-    };
-    String ERRCODE_SVX_GRAPHIC_WRONG_FILEFORMAT&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "An unlinked graphic could not be loaded.";
-    };
-    String ERRCODE_SVX_LINGU_NOLANGUAGE&ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "A language has not been fixed for the selected term.";
-    };
-    String (ERRCODE_SVX_FORMS_NOIOSERVICES | ERRCODE_CLASS_READ) & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The form layer wasn't loaded as the required IO-services (com.sun.star.io.*) could not be instantiated.";
-    };
-    String (ERRCODE_SVX_FORMS_NOIOSERVICES | ERRCODE_CLASS_WRITE) & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The form layer wasn't written as the required IO services (com.sun.star.io.*) could not be instantiated.";
-    };
-    String (ERRCODE_SVX_FORMS_READWRITEFAILED | ERRCODE_CLASS_READ) & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "An error occurred while reading the form controls. The form layer has not been loaded.";
-    };
-    String (ERRCODE_SVX_FORMS_READWRITEFAILED | ERRCODE_CLASS_WRITE) & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "An error occurred while writing the form controls. The form layer has not been saved.";
-    };
-    String (ERRCODE_SVX_BULLETITEM_NOBULLET | ERRCODE_CLASS_READ) & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "An error occurred while reading one of the bullets. Not all of the bullets were loaded.";
-    };
+    ItemList [ en-US ] =
+    {
+        < "No thesaurus available for the current language.\nPlease check your installation and install the desired language." ;
+          ERRCODE_SVX_LINGU_THESAURUSNOTEXISTS&ERRCODE_RES_MASK ; >;
+        < "$(ARG1) is not supported by the spellcheck function or is not presently active.\nPlease check your installation and, if necessary, install the required language module\n or activate it under 'Tools - Options -  Language Settings - Writing Aids'.";
+          ERRCODE_SVX_LINGU_LANGUAGENOTEXISTS&ERRCODE_RES_MASK ; >;
+        < "Spellcheck is not available." ;
+          ERRCODE_SVX_LINGU_LINGUNOTEXISTS&ERRCODE_RES_MASK ; >;
+        < "Hyphenation not available." ;
+          ERRCODE_SVX_LINGU_HYPHENNOTEXISTS&ERRCODE_RES_MASK ; >;
+        < "The custom dictionary $(ARG1) cannot be read." ;
+          ERRCODE_SVX_LINGU_DICT_NOTREADABLE&ERRCODE_RES_MASK ; >;
+        < "The custom dictionary $(ARG1) cannot be created." ;
+          ERRCODE_SVX_LINGU_DICT_NOTWRITEABLE&ERRCODE_RES_MASK ; >;
+        < "The graphic $(ARG1) could not be found." ;
+          ERRCODE_SVX_GRAPHIC_NOTREADABLE&ERRCODE_RES_MASK ; >;
+        < "An unlinked graphic could not be loaded.";
+          ERRCODE_SVX_GRAPHIC_WRONG_FILEFORMAT&ERRCODE_RES_MASK ; >;
+        < "A language has not been fixed for the selected term.";
+          ERRCODE_SVX_LINGU_NOLANGUAGE&ERRCODE_RES_MASK ; >;
+        < "The form layer wasn't loaded as the required IO-services (com.sun.star.io.*) could not be instantiated.";
+          (ERRCODE_SVX_FORMS_NOIOSERVICES | ERRCODE_CLASS_READ) & ERRCODE_RES_MASK ; >;
+        < "The form layer wasn't written as the required IO services (com.sun.star.io.*) could not be instantiated.";
+          (ERRCODE_SVX_FORMS_NOIOSERVICES | ERRCODE_CLASS_WRITE) & ERRCODE_RES_MASK ; >;
+        < "An error occurred while reading the form controls. The form layer has not been loaded.";
+          (ERRCODE_SVX_FORMS_READWRITEFAILED | ERRCODE_CLASS_READ) & ERRCODE_RES_MASK ; >;
+        < "An error occurred while writing the form controls. The form layer has not been saved.";
+          (ERRCODE_SVX_FORMS_READWRITEFAILED | ERRCODE_CLASS_WRITE) & ERRCODE_RES_MASK ; >;
+        < "An error occurred while reading one of the bullets. Not all of the bullets were loaded.";
+          (ERRCODE_SVX_BULLETITEM_NOBULLET | ERRCODE_CLASS_READ) & ERRCODE_RES_MASK ; >;
 
-    String ERRCODE_SVX_MODIFIED_VBASIC_STORAGE & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "All changes to the Basic Code are lost. The original VBA Macro Code is saved instead.";
-    };
+        < "All changes to the Basic Code are lost. The original VBA Macro Code is saved instead.";
+          ERRCODE_SVX_MODIFIED_VBASIC_STORAGE & ERRCODE_RES_MASK ; >;
 
-    String ERRCODE_SVX_VBASIC_STORAGE_EXIST & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The original VBA Basic Code contained in the document will not be saved.";
-    };
+        < "The original VBA Basic Code contained in the document will not be saved.";
+          ERRCODE_SVX_VBASIC_STORAGE_EXIST & ERRCODE_RES_MASK ; >;
 
-    String ERRCODE_SVX_WRONGPASS & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The password is incorrect. The document cannot be opened.";
-    };
+        < "The password is incorrect. The document cannot be opened.";
+          ERRCODE_SVX_WRONGPASS & ERRCODE_RES_MASK ; >;
 
-    String ERRCODE_SVX_READ_FILTER_CRYPT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The encryption method used in this document is not supported. Only Microsoft Office 97/2000 compatible password encryption is supported.";
-    };
+        < "The encryption method used in this document is not supported. Only Microsoft Office 97/2000 compatible password encryption is supported.";
+          ERRCODE_SVX_READ_FILTER_CRYPT & ERRCODE_RES_MASK ; >;
 
-    String ERRCODE_SVX_READ_FILTER_PPOINT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "The loading of password-encrypted Microsoft PowerPoint presentations is not supported.";
-    };
+        < "The loading of password-encrypted Microsoft PowerPoint presentations is not supported.";
+          ERRCODE_SVX_READ_FILTER_PPOINT & ERRCODE_RES_MASK ; >;
 
-    String ERRCODE_SVX_EXPORT_FILTER_CRYPT & ERRCODE_RES_MASK
-    {
-        Text [ en-US ] = "Password protection is not supported when documents are saved in a Microsoft Office format.\nDo you want to save the document without password protection?";
+        < "Password protection is not supported when documents are saved in a Microsoft Office format.\nDo you want to save the document without password protection?";
+          ERRCODE_SVX_EXPORT_FILTER_CRYPT & ERRCODE_RES_MASK ; >;
     };
 };
 
diff --git a/svx/source/src/errtxt.src b/svx/source/src/errtxt.src
index 952a5ee..bf606cd 100644
--- a/svx/source/src/errtxt.src
+++ b/svx/source/src/errtxt.src
@@ -21,391 +21,112 @@
 #include <svtools/svtools.hrc>
 #include <svtools/sfxecode.hxx>
 
-Resource RID_ERRCTX
+StringArray RID_ERRCTX
 {
-    String ERRCTX_ERROR
-    {
-        Text [ en-US ] = "Error" ;
-    };
-    String ERRCTX_WARNING
-    {
-        Text [ en-US ] = "Warning" ;
-    };
-    String ERRCTX_SFX_LOADTEMPLATE
-    {
-        Text [ en-US ] = "$(ERR) loading the template $(ARG1)" ;
-    };
-    String ERRCTX_SFX_SAVEDOC
-    {
-        Text [ en-US ] = "$(ERR) saving the document $(ARG1)";
-    };
-    String ERRCTX_SFX_SAVEASDOC
-    {
-        Text [ en-US ] = "$(ERR) saving the document $(ARG1)";
-    };
-    String ERRCTX_SFX_DOCINFO
-    {
-        Text [ en-US ] = "$(ERR) displaying doc. information for document $(ARG1)" ;
-    };
-    String ERRCTX_SFX_DOCTEMPLATE
-    {
-        Text [ en-US ] = "$(ERR) writing document $(ARG1) as template" ;
-    };
-    String ERRCTX_SFX_MOVEORCOPYCONTENTS
-    {
-        Text [ en-US ] = "$(ERR) copying or moving document contents" ;
-    };
-    String ERRCTX_SFX_DOCMANAGER
-    {
-        Text [ en-US ] = "$(ERR) starting the Document Manager" ;
-    };
-    String ERRCTX_SFX_OPENDOC
-    {
-        Text [ en-US ] = "$(ERR) loading document $(ARG1)" ;
-    };
-    String ERRCTX_SFX_NEWDOCDIRECT
-    {
-        Text [ en-US ] = "$(ERR) creating a new document" ;
-    };
-    String ERRCTX_SFX_NEWDOC
-    {
-        Text [ en-US ] = "$(ERR) creating a new document" ;
-    };
-    String ERRCTX_SFX_CREATEOBJSH
-    {
-        Text [ en-US ] = "$(ERR) expanding entry" ;
-    };
-    String ERRCTX_SFX_LOADBASIC
-    {
-        Text [ en-US ] = "$(ERR) loading BASIC of document $(ARG1)" ;
-    };
-    String ERRCTX_SFX_SEARCHADDRESS
-    {
-        Text [ en-US ] = "$(ERR) searching for an address";
+    ItemList [ en-US ] =
+    {
+        < "Error" ; ERRCTX_ERROR ; >;
+        < "Warning" ; ERRCTX_WARNING ; >;
+        < "$(ERR) loading the template $(ARG1)" ; ERRCTX_SFX_LOADTEMPLATE ; >;
+        < "$(ERR) saving the document $(ARG1)"; ERRCTX_SFX_SAVEDOC ; >;
+        < "$(ERR) saving the document $(ARG1)"; ERRCTX_SFX_SAVEASDOC ; >;
+        < "$(ERR) displaying doc. information for document $(ARG1)" ; ERRCTX_SFX_DOCINFO ; >;
+        < "$(ERR) writing document $(ARG1) as template" ; ERRCTX_SFX_DOCTEMPLATE ; >;
+        < "$(ERR) copying or moving document contents" ; ERRCTX_SFX_MOVEORCOPYCONTENTS ; >;
+        < "$(ERR) starting the Document Manager" ; ERRCTX_SFX_DOCMANAGER ; >;
+        < "$(ERR) loading document $(ARG1)" ; ERRCTX_SFX_OPENDOC ; >;
+        < "$(ERR) creating a new document" ; ERRCTX_SFX_NEWDOCDIRECT ; >;
+        < "$(ERR) creating a new document" ; ERRCTX_SFX_NEWDOC ; >;
+        < "$(ERR) expanding entry" ; ERRCTX_SFX_CREATEOBJSH ; >;
+        < "$(ERR) loading BASIC of document $(ARG1)" ; ERRCTX_SFX_LOADBASIC ; >;
+        < "$(ERR) searching for an address"; ERRCTX_SFX_SEARCHADDRESS ; >;
     };
 };
-Resource RID_ERRHDL
-{
-    String ERRCODE_CLASS_ABORT
-    {
-        Text [ en-US ] = "Abort" ;
-    };
-    String ERRCODE_CLASS_NOTEXISTS
-    {
-        Text [ en-US ] = "Nonexistent object" ;
-    };
-    String ERRCODE_CLASS_ALREADYEXISTS
-    {
-        Text [ en-US ] = "Object already exists" ;
-    };
-    String ERRCODE_CLASS_ACCESS
-    {
-        Text [ en-US ] = "Object not accessible" ;
-    };
-    String ERRCODE_CLASS_PATH
-    {
-        Text [ en-US ] = "Inadmissible path" ;
-    };
-    String ERRCODE_CLASS_LOCKING
-    {
-        Text [ en-US ] = "Locking problem" ;
-    };
-    String ERRCODE_CLASS_PARAMETER
-    {
-        Text [ en-US ] = "Wrong parameter" ;
-    };
-    String ERRCODE_CLASS_SPACE
-    {
-        Text [ en-US ] = "Resource exhausted" ;
-    };
-    String ERRCODE_CLASS_NOTSUPPORTED
-    {
-        Text [ en-US ] = "Action not supported" ;
-    };
-    String ERRCODE_CLASS_READ
-    {
-        Text [ en-US ] = "Read Error" ;
-    };
-    String ERRCODE_CLASS_WRITE
-    {
-        Text [ en-US ] = "Write Error" ;
-    };
-    String ERRCODE_CLASS_UNKNOWN
-    {
-        Text [ en-US ] = "unknown" ;
-    };
-    String ERRCODE_CLASS_VERSION
-    {
-        Text [ en-US ] = "Version Incompatibility" ;
-    };
-    String ERRCODE_CLASS_GENERAL
-    {
-        Text [ en-US ] = "General Error" ;
-    };
-    String ERRCODE_CLASS_FORMAT
-    {
-        Text [ en-US ] = "Incorrect format" ;
-    };
-    String ERRCODE_CLASS_CREATE
-    {
-        Text [ en-US ] = "Error creating object" ;
-    };
-    String ERRCODE_CLASS_SBX
-    {
-        Text [ en-US ] = "Inadmissible value or data type" ;
-    };
-    String ERRCODE_CLASS_RUNTIME
-    {
-        Text [ en-US ] = "BASIC runtime error" ;
-    };
-    String ERRCODE_CLASS_COMPILER
-    {
-        Text [ en-US ] = "BASIC syntax error" ;
-    };
-    String 1
-    {
-        Text [ en-US ] = "General Error" ;
-    };
-    String ERRCODE_IO_GENERAL
-    {
-        Text [ en-US ] = "General input/output error." ;
-    };
-    String ERRCODE_IO_MISPLACEDCHAR
-    {
-        Text [ en-US ] = "Invalid file name." ;
-    };
-    String ERRCODE_IO_NOTEXISTS
-    {
-        Text [ en-US ] = "Nonexistent file." ;
-    };
-    String ERRCODE_IO_ALREADYEXISTS
-    {
-        Text [ en-US ] = "File already exists." ;
-    };
-    String ERRCODE_IO_NOTADIRECTORY
-    {
-        Text [ en-US ] = "The object is not a directory." ;
-    };
-    String ERRCODE_IO_NOTAFILE
-    {
-        Text [ en-US ] = "The object is not a file." ;
-    };
-    String ERRCODE_IO_INVALIDDEVICE
-    {
-        Text [ en-US ] = "The specified device is invalid." ;
-    };
-    String ERRCODE_IO_ACCESSDENIED
-    {
-        Text [ en-US ] = "The object cannot be accessed\ndue to insufficient user rights." ;
-    };
-    String ERRCODE_IO_LOCKVIOLATION
-    {
-        Text [ en-US ] = "Sharing violation while accessing the object." ;
-    };
-    String ERRCODE_IO_OUTOFSPACE
-    {
-        Text [ en-US ] = "No more space on device." ;
-    };
-    String ERRCODE_IO_ISWILDCARD
-    {
-        Text [ en-US ] = "This operation cannot be run on\nfiles containing wildcards." ;
-    };
-    String ERRCODE_IO_NOTSUPPORTED
-    {
-        Text [ en-US ] = "This operation is not supported on this operating system." ;
-    };
-    String ERRCODE_IO_TOOMANYOPENFILES
-    {
-        Text [ en-US ] = "There are too many files open." ;
-    };
-    String ERRCODE_IO_CANTREAD
-    {
-        Text [ en-US ] = "Data could not be read from the file." ;
-    };
-    String ERRCODE_IO_CANTWRITE
-    {
-        Text [ en-US ] = "The file could not be written." ;
-    };
-    String ERRCODE_IO_OUTOFMEMORY
-    {
-        Text [ en-US ] = "The operation could not be run due to insufficient memory." ;
-    };
-    String ERRCODE_IO_CANTSEEK
-    {
-        Text [ en-US ] = "The seek operation could not be run." ;
-    };
-    String ERRCODE_IO_CANTTELL
-    {
-        Text [ en-US ] = "The tell operation could not be run." ;
-    };
-    String ERRCODE_IO_WRONGVERSION
-    {
-        Text [ en-US ] = "Incorrect file version." ;
-    };
-    String ERRCODE_IO_WRONGFORMAT
-    {
-        Text [ en-US ] = "Incorrect file format." ;
-    };
-    String ERRCODE_IO_INVALIDCHAR
-    {
-        Text [ en-US ] = "The file name contains invalid characters." ;
-    };
-    String ERRCODE_IO_UNKNOWN
-    {
-        Text [ en-US ] = "An unknown I/O error has occurred." ;
-    };
-    String ERRCODE_IO_INVALIDACCESS
-    {
-        Text [ en-US ] = "An invalid attempt was made to access the file." ;
-    };
-    String ERRCODE_IO_CANTCREATE
-    {
-        Text [ en-US ] = "The file could not be created." ;
-    };
-    String ERRCODE_IO_INVALIDPARAMETER
-    {
-        Text [ en-US ] = "The operation was started under an invalid parameter." ;
-    };
-    String ERRCODE_IO_ABORT
-    {
-        Text [ en-US ] = "The operation on the file was aborted." ;
-    };
-    String ERRCODE_IO_NOTEXISTSPATH
-    {
-        Text [ en-US ] = "Path to the file does not exist." ;
-    };
-    String ERRCODE_IO_RECURSIVE
-    {
-        Text [ en-US ] = "An object cannot be copied into itself." ;
-    };
-    String ERRCODE_SFX_TEMPLATENOTFOUND
-    {
-        Text [ en-US ] = "The specified template could not be found." ;
-    };
-    String ERRCODE_SFX_NOTATEMPLATE
-    {
-        Text [ en-US ] = "The file cannot be used as template." ;
-    };
-    String ERRCODE_SFX_ALREADYOPEN
-    {
-        Text [ en-US ] = "This document has already been opened for editing." ;
-    };
-    String ERRCODE_SFX_WRONGPASSWORD
-    {
-        Text [ en-US ] = "The wrong password has been entered." ;
-    };
-    String ERRCODE_SFX_DOLOADFAILED
-    {
-        Text [ en-US ] = "Error reading file." ;
-    };
-    String ERRCODE_SFX_DOCUMENTREADONLY
-    {
-        Text [ en-US ] = "The document was opened as read-only." ;
-    };
-    String ERRCODE_SFX_OLEGENERAL
-    {
-        Text [ en-US ] = "General OLE Error." ;
-    };
-    String ERRCODE_INET_NAME_RESOLVE
-    {
-        Text [ en-US ] = "The host name $(ARG1) could not be resolved." ;
-    };
-    String ERRCODE_INET_CONNECT
-    {
-        Text [ en-US ] = "Could not establish Internet connection to $(ARG1)." ;
-    };
-    String ERRCODE_INET_READ
-    {
-        Text [ en-US ] = "Error reading data from the Internet.\nServer error message: $(ARG1)." ;
-    };
-    String ERRCODE_INET_WRITE
-    {
-        Text [ en-US ] = "Error transferring data to the Internet.\nServer error message: $(ARG1)." ;
-    };
-    String ERRCODE_INET_GENERAL
-    {
-        Text [ en-US ] = "General Internet error has occurred." ;
-    };
-    String ERRCODE_INET_OFFLINE
-    {
-        Text [ en-US ] = "The requested Internet data is not available in the cache and cannot be transmitted as the Online mode has not be activated." ;
-    };
-    String ERRCODE_SFX_CANTCREATECONTENT
-    {
-        Text [ en-US ] = "The contents could not be created." ;
-    };
-    String ERRCODE_IO_NAMETOOLONG
-    {
-        Text [ en-US ] = "The file name is too long for the target file system." ;
-    };
-    String ERRCODE_SFX_INVALIDSYNTAX
-    {
-        Text [ en-US ] = "The input syntax is invalid." ;
-    };
-    String ERRCODE_SFX_CANTCREATEFOLDER
-    {
-        Text [ en-US ] = "The input syntax is invalid." ;
-    };
-    String ERRCODE_IO_NOTSTORABLEINBINARYFORMAT
-    {
-        Text [ en-US ] = "This document contains attributes that cannot be saved in the selected format.\nPlease save the document in a %PRODUCTNAME %PRODUCTVERSION file format.";
-    };
-    String ERRCODE_SFX_NOMOREDOCUMENTSALLOWED
-    {
-        Text [ en-US ] = "The maximum number of documents that can be opened at the same time has been reached. You need to close one or more documents before you can open a new document.";
-    };
-    String ERRCODE_SFX_CANTCREATEBACKUP
-    {
-        Text [ en-US ] = "Could not create backup copy." ;
-    };
-    String ERRCODE_SFX_MACROS_SUPPORT_DISABLED
-    {
-        Text [ en-US ] = "An attempt was made to execute a macro.\nFor security reasons, macro support is disabled.";
-    };
-    String ERRCODE_SFX_DOCUMENT_MACRO_DISABLED_MAC
-    {
-        Text [ en-US ] = "This document contains macros.\n\nMacros may contain viruses. Execution of macros is disabled due to the current macro security setting in %PRODUCTNAME - Preferences - %PRODUCTNAME - Security.\n\nTherefore, some functionality may not be available." ;
-    };
-    String ERRCODE_SFX_DOCUMENT_MACRO_DISABLED
-    {
-        Text [ en-US ] = "This document contains macros.\n\nMacros may contain viruses. Execution of macros is disabled due to the current macro security setting in Tools - Options - %PRODUCTNAME - Security.\n\nTherefore, some functionality may not be available." ;
-    };
-    String ERRCODE_SFX_INCOMPLETE_ENCRYPTION
-    {
-        Text [ en-US ] = "The encrypted document contains unexpected non-encrypted streams.\n\nThis could be the result of document manipulation.\n\nWe recommend that you do not trust the content of the current document.\nExecution of macros is disabled for this document.\n " ;
-    };
 
-    String ERRCODE_IO_INVALIDLENGTH
-    {
-        Text [ en-US ] = "Invalid data length." ;
-    };
-    String ERRCODE_IO_CURRENTDIR
-    {
-        Text [ en-US ] = "Function not possible: path contains current directory." ;
-    };
-    String ERRCODE_IO_NOTSAMEDEVICE
-    {
-        Text [ en-US ] = "Function not possible: device (drive) not identical." ;
-    };
-    String ERRCODE_IO_DEVICENOTREADY
-    {
-        Text [ en-US ] = "Device (drive) not ready." ;
-    };
-    String ERRCODE_IO_BADCRC
-    {
-        Text [ en-US ] = "Wrong check amount." ;
-    };
-    String ERRCODE_IO_WRITEPROTECTED
-    {
-        Text [ en-US ] = "Function not possible: write protected." ;
-    };
-    String ERRCODE_SFX_SHARED_NOPASSWORDCHANGE
-    {
-        Text [ en-US ] = "The password of a shared spreadsheet cannot be set or changed.\nDeactivate sharing mode first.";
-    };
-    String ERRCODE_SFX_FORMAT_ROWCOL
-    {
-        Text [ en-US ] = "File format error found at $(ARG1)(row,col).";
+StringArray RID_ERRHDL
+{
+    ItemList [ en-US ] =
+    {
+        < "Abort" ; ERRCODE_CLASS_ABORT ; >;
+        < "Nonexistent object" ; ERRCODE_CLASS_NOTEXISTS ; >;
+        < "Object already exists" ; ERRCODE_CLASS_ALREADYEXISTS ; >;
+        < "Object not accessible" ; ERRCODE_CLASS_ACCESS ; >;
+        < "Inadmissible path" ; ERRCODE_CLASS_PATH ; >;
+        < "Locking problem" ; ERRCODE_CLASS_LOCKING ; >;
+        < "Wrong parameter" ; ERRCODE_CLASS_PARAMETER ; >;
+        < "Resource exhausted" ; ERRCODE_CLASS_SPACE ; >;
+        < "Action not supported" ; ERRCODE_CLASS_NOTSUPPORTED ; >;
+        < "Read Error" ; ERRCODE_CLASS_READ ; >;
+        < "Write Error" ; ERRCODE_CLASS_WRITE ; >;
+        < "unknown" ; ERRCODE_CLASS_UNKNOWN ; >;
+        < "Version Incompatibility" ; ERRCODE_CLASS_VERSION ; >;
+        < "General Error" ; ERRCODE_CLASS_GENERAL ; >;
+        < "Incorrect format" ; ERRCODE_CLASS_FORMAT ; >;
+        < "Error creating object" ; ERRCODE_CLASS_CREATE ; >;
+        < "Inadmissible value or data type" ; ERRCODE_CLASS_SBX ; >;
+        < "BASIC runtime error" ; ERRCODE_CLASS_RUNTIME ; >;
+        < "BASIC syntax error" ; ERRCODE_CLASS_COMPILER ; >;
+        < "General Error" ; 1 ; >;
+        < "General input/output error." ; ERRCODE_IO_GENERAL ; >;
+        < "Invalid file name." ; ERRCODE_IO_MISPLACEDCHAR ; >;
+        < "Nonexistent file." ; ERRCODE_IO_NOTEXISTS ; >;
+        < "File already exists." ; ERRCODE_IO_ALREADYEXISTS ; >;
+        < "The object is not a directory." ; ERRCODE_IO_NOTADIRECTORY ; >;
+        < "The object is not a file." ; ERRCODE_IO_NOTAFILE ; >;
+        < "The specified device is invalid." ; ERRCODE_IO_INVALIDDEVICE ; >;
+        < "The object cannot be accessed\ndue to insufficient user rights." ; ERRCODE_IO_ACCESSDENIED ; >;
+        < "Sharing violation while accessing the object." ; ERRCODE_IO_LOCKVIOLATION ; >;
+        < "No more space on device." ; ERRCODE_IO_OUTOFSPACE ; >;
+        < "This operation cannot be run on\nfiles containing wildcards." ; ERRCODE_IO_ISWILDCARD ; >;
+        < "This operation is not supported on this operating system." ; ERRCODE_IO_NOTSUPPORTED ; >;
+        < "There are too many files open." ; ERRCODE_IO_TOOMANYOPENFILES ; >;
+        < "Data could not be read from the file." ; ERRCODE_IO_CANTREAD ; >;
+        < "The file could not be written." ; ERRCODE_IO_CANTWRITE ; >;
+        < "The operation could not be run due to insufficient memory." ; ERRCODE_IO_OUTOFMEMORY ; >;
+        < "The seek operation could not be run." ; ERRCODE_IO_CANTSEEK ; >;
+        < "The tell operation could not be run." ; ERRCODE_IO_CANTTELL ; >;
+        < "Incorrect file version." ; ERRCODE_IO_WRONGVERSION ; >;
+        < "Incorrect file format." ; ERRCODE_IO_WRONGFORMAT ; >;
+        < "The file name contains invalid characters." ; ERRCODE_IO_INVALIDCHAR ; >;
+        < "An unknown I/O error has occurred." ; ERRCODE_IO_UNKNOWN ; >;
+        < "An invalid attempt was made to access the file." ; ERRCODE_IO_INVALIDACCESS ; >;
+        < "The file could not be created." ; ERRCODE_IO_CANTCREATE ; >;
+        < "The operation was started under an invalid parameter." ; ERRCODE_IO_INVALIDPARAMETER ; >;
+        < "The operation on the file was aborted." ; ERRCODE_IO_ABORT ; >;
+        < "Path to the file does not exist." ; ERRCODE_IO_NOTEXISTSPATH ; >;
+        < "An object cannot be copied into itself." ; ERRCODE_IO_RECURSIVE ; >;
+        < "The specified template could not be found." ; ERRCODE_SFX_TEMPLATENOTFOUND ; >;
+        < "The file cannot be used as template." ; ERRCODE_SFX_NOTATEMPLATE ; >;
+        < "This document has already been opened for editing." ; ERRCODE_SFX_ALREADYOPEN ; >;
+        < "The wrong password has been entered." ; ERRCODE_SFX_WRONGPASSWORD ; >;
+        < "Error reading file." ; ERRCODE_SFX_DOLOADFAILED ; >;
+        < "The document was opened as read-only." ; ERRCODE_SFX_DOCUMENTREADONLY ; >;
+        < "General OLE Error." ; ERRCODE_SFX_OLEGENERAL ; >;
+        < "The host name $(ARG1) could not be resolved." ; ERRCODE_INET_NAME_RESOLVE ; >;
+        < "Could not establish Internet connection to $(ARG1)." ; ERRCODE_INET_CONNECT ; >;
+        < "Error reading data from the Internet.\nServer error message: $(ARG1)." ; ERRCODE_INET_READ ; >;
+        < "Error transferring data to the Internet.\nServer error message: $(ARG1)." ; ERRCODE_INET_WRITE ; >;
+        < "General Internet error has occurred." ; ERRCODE_INET_GENERAL ; >;
+        < "The requested Internet data is not available in the cache and cannot be transmitted as the Online mode has not be activated." ; ERRCODE_INET_OFFLINE ; >;
+        < "The contents could not be created." ; ERRCODE_SFX_CANTCREATECONTENT ; >;
+        < "The file name is too long for the target file system." ; ERRCODE_IO_NAMETOOLONG ; >;
+        < "The input syntax is invalid." ; ERRCODE_SFX_INVALIDSYNTAX ; >;
+        < "The input syntax is invalid." ; ERRCODE_SFX_CANTCREATEFOLDER ; >;
+        < "This document contains attributes that cannot be saved in the selected format.\nPlease save the document in a %PRODUCTNAME %PRODUCTVERSION file format."; ERRCODE_IO_NOTSTORABLEINBINARYFORMAT ; >;
+        < "The maximum number of documents that can be opened at the same time has been reached. You need to close one or more documents before you can open a new document."; ERRCODE_SFX_NOMOREDOCUMENTSALLOWED ; >;
+        < "Could not create backup copy." ; ERRCODE_SFX_CANTCREATEBACKUP ; >;
+        < "An attempt was made to execute a macro.\nFor security reasons, macro support is disabled."; ERRCODE_SFX_MACROS_SUPPORT_DISABLED ; >;
+        < "This document contains macros.\n\nMacros may contain viruses. Execution of macros is disabled due to the current macro security setting in %PRODUCTNAME - Preferences - %PRODUCTNAME - Security.\n\nTherefore, some functionality may not be available." ; ERRCODE_SFX_DOCUMENT_MACRO_DISABLED_MAC ; >;
+        < "This document contains macros.\n\nMacros may contain viruses. Execution of macros is disabled due to the current macro security setting in Tools - Options - %PRODUCTNAME - Security.\n\nTherefore, some functionality may not be available." ; ERRCODE_SFX_DOCUMENT_MACRO_DISABLED ; >;
+        < "The encrypted document contains unexpected non-encrypted streams.\n\nThis could be the result of document manipulation.\n\nWe recommend that you do not trust the content of the current document.\nExecution of macros is disabled for this document.\n " ; ERRCODE_SFX_INCOMPLETE_ENCRYPTION ; >;
+        < "Invalid data length." ; ERRCODE_IO_INVALIDLENGTH ; >;
+        < "Function not possible: path contains current directory." ; ERRCODE_IO_CURRENTDIR ; >;
+        < "Function not possible: device (drive) not identical." ; ERRCODE_IO_NOTSAMEDEVICE ; >;
+        < "Device (drive) not ready." ; ERRCODE_IO_DEVICENOTREADY ; >;
+        < "Wrong check amount." ; ERRCODE_IO_BADCRC ; >;
+        < "Function not possible: write protected." ; ERRCODE_IO_WRITEPROTECTED ; >;
+        < "The password of a shared spreadsheet cannot be set or changed.\nDeactivate sharing mode first."; ERRCODE_SFX_SHARED_NOPASSWORDCHANGE ; >;
+        < "File format error found at $(ARG1)(row,col)."; ERRCODE_SFX_FORMAT_ROWCOL ; >;
     };
 };
 
diff --git a/sw/source/ui/app/error.src b/sw/source/ui/app/error.src
index 67e4e8d..a76bed6 100644
--- a/sw/source/ui/app/error.src
+++ b/sw/source/ui/app/error.src
@@ -41,143 +41,47 @@ String STR_ERROR_CLPBRD_READ
 #define ERR_CODE( class, err )  (class | (err - ERROR_SW_BASE))
 #define WARN_CODE( class, err ) (class | ( err - WARN_SW_BASE))
 
-Resource RID_SW_ERRHDL
+StringArray RID_SW_ERRHDL
 {
-     // Import-Errors
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_FILE_FORMAT_ERROR )
-    {
-        Text [ en-US ] = "File format error found." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_READ_ERROR )
-    {
-        Text [ en-US ] = "Error reading file." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_INPUT_FILE )
-    {
-        Text [ en-US ] = "Input file error." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_NOWRITER_FILE )
-    {
-        Text [ en-US ] = "This is not a %PRODUCTNAME Writer file." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_UNEXPECTED_EOF )
-    {
-        Text [ en-US ] = "Unexpected end of file." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_PASSWD )
-    {
-        Text [ en-US ] = "Password-protected files cannot be opened." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW6_NO_WW6_FILE_ERR )
-    {
-        Text [ en-US ] = "This is not a valid WinWord6 file." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW6_FASTSAVE_ERR )
-    {
-        Text [ en-US ] = "This file was saved with WinWord in 'Fast Save' mode. Please unmark the WinWord option 'Allow Fast Saves' and save the file again." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_ROWCOL )
-    {
-        Text [ en-US ] = "File format error found at $(ARG1)(row,col)." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_NEW_VERSION )
-    {
-        Text [ en-US ] = "File has been written in a newer version." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW8_NO_WW8_FILE_ERR )
-    {
-        Text [ en-US ] = "This is not a valid WinWord97 file.";
-    };
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_FILE_ROWCOL )
-    {
-        Text [ en-US ] = "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col).";
-    };
-     // Export-Errors
-    String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_WRITE_ERROR )
-    {
-        Text [ en-US ] = "Error writing file." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_OLD_GLOSSARY )
-    {
-        Text [ en-US ] = "Wrong AutoText document version." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_WRITE_ERROR_FILE )
-    {
-        Text [ en-US ] = "Error in writing sub-document $(ARG1).";
-    };
-     // Import-/Export-Errors
-    String ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_INTERNAL_ERROR )
-    {
-        Text [ en-US ] = "Internal error in %PRODUCTNAME Writer file format." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_INTERNAL_ERROR )
-    {
-        Text [ en-US ] = "Internal error in %PRODUCTNAME Writer file format." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_LOCKING , ERR_TXTBLOCK_NEWFILE_ERROR )
-    {
-        Text [ en-US ] = "$(ARG1) has changed." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_PATH , ERR_AUTOPATH_ERROR )
-    {
-        Text [ en-US ] = "$(ARG1) does not exist." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLSPLIT_ERROR )
-    {
-        Text [ en-US ] = "Cells cannot be further split." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLINSCOL_ERROR )
-    {
-        Text [ en-US ] = "Additional columns cannot be inserted." ;
-    };
-    String ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLDDECHG_ERROR )
-    {
-        Text [ en-US ] = "The structure of a linked table cannot be modified." ;
-    };
+    ItemList [ en-US ] =
+    {
+        // Import-Errors
+        < "File format error found." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_FILE_FORMAT_ERROR ) ; >;
+        < "Error reading file." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_READ_ERROR ) ; >;
+        < "Input file error." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_INPUT_FILE ) ; >;
+        < "This is not a %PRODUCTNAME Writer file." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_NOWRITER_FILE ) ; >;
+        < "Unexpected end of file." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_UNEXPECTED_EOF ) ; >;
+        < "Password-protected files cannot be opened." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SW6_PASSWD ) ; >;
+        < "This is not a valid WinWord6 file." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW6_NO_WW6_FILE_ERR ) ; >;
+        < "This file was saved with WinWord in 'Fast Save' mode. Please unmark the WinWord option 'Allow Fast Saves' and save the file again." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW6_FASTSAVE_ERR ) ; >;
+        < "File format error found at $(ARG1)(row,col)." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_ROWCOL ) ; >;
+        < "File has been written in a newer version." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_NEW_VERSION ) ; >;
+        < "This is not a valid WinWord97 file."; ERR_CODE ( ERRCODE_CLASS_READ , ERR_WW8_NO_WW8_FILE_ERR ) ; >;
+        < "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col)."; ERR_CODE ( ERRCODE_CLASS_READ , ERR_FORMAT_FILE_ROWCOL ) ; >;
+        // Export-Errors
+        < "Error writing file." ; ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_WRITE_ERROR ) ; >;
+        < "Wrong AutoText document version." ; ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_OLD_GLOSSARY ) ; >;
+        < "Error in writing sub-document $(ARG1)."; ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_WRITE_ERROR_FILE ) ; >;
+        // Import-/Export-Errors
+        < "Internal error in %PRODUCTNAME Writer file format." ; ERR_CODE ( ERRCODE_CLASS_READ , ERR_SWG_INTERNAL_ERROR ) ; >;
+        < "Internal error in %PRODUCTNAME Writer file format." ; ERR_CODE ( ERRCODE_CLASS_WRITE , ERR_SWG_INTERNAL_ERROR ) ; >;
+        < "$(ARG1) has changed." ; ERR_CODE ( ERRCODE_CLASS_LOCKING , ERR_TXTBLOCK_NEWFILE_ERROR ) ; >;
+        < "$(ARG1) does not exist." ; ERR_CODE ( ERRCODE_CLASS_PATH , ERR_AUTOPATH_ERROR ) ; >;
+        < "Cells cannot be further split." ; ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLSPLIT_ERROR ) ; >;
+        < "Additional columns cannot be inserted." ; ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLINSCOL_ERROR ) ; >;
+        < "The structure of a linked table cannot be modified." ; ERR_CODE ( ERRCODE_CLASS_NONE , ERR_TBLDDECHG_ERROR ) ; >;
 
-    String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_NO_DRAWINGS )
-    {
-        Text [ en-US ] = "No drawings could be read." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_READ , WARN_WW6_FASTSAVE_ERR )
-    {
-        Text [ en-US ] = "This file was saved with WinWord in 'Fast Save' mode. Please unmark the WinWord option 'Allow Fast Saves' and save the file again." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_FEATURES_LOST )
-    {
-        Text [ en-US ] = "Not all attributes could be read." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_FEATURES_LOST )
-    {
-        Text [ en-US ] = "Not all attributes could be recorded." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_OLE )
-    {
-        Text [ en-US ] = "Some OLE objects could only be loaded as images." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_OLE )
-    {
-        Text [ en-US ] = "Some OLE objects could only be saved as images." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_POOR_LOAD )
-    {
-        Text [ en-US ] = "Document could not be completely loaded." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_POOR_LOAD )
-    {
-        Text [ en-US ] = "Document could not be completely saved." ;
-    };
-    String WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_HTML_NO_MACROS)
-    {
-        Text [ en-US ] = "This HTML document contains %PRODUCTNAME Basic macros.\nThey were not saved with the current export settings.";
-    };
-    String ERR_CODE ( ERRCODE_CLASS_WRITE , WARN_WRITE_ERROR_FILE )
-    {
-        Text [ en-US ] = "Error in writing sub-document $(ARG1).";
-    };
-    String ERR_CODE ( ERRCODE_CLASS_WRITE , WARN_FORMAT_FILE_ROWCOL )
-    {
-        Text [ en-US ] = "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col).";
+        < "No drawings could be read." ; WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_NO_DRAWINGS ) ; >;
+        < "This file was saved with WinWord in 'Fast Save' mode. Please unmark the WinWord option 'Allow Fast Saves' and save the file again." ; WARN_CODE ( ERRCODE_CLASS_READ , WARN_WW6_FASTSAVE_ERR ) ; >;
+        < "Not all attributes could be read." ; WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_FEATURES_LOST ) ; >;
+        < "Not all attributes could be recorded." ; WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_FEATURES_LOST ) ; >;
+        < "Some OLE objects could only be loaded as images." ; WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_OLE ) ; >;
+        < "Some OLE objects could only be saved as images." ; WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_OLE ) ; >;
+        < "Document could not be completely loaded." ; WARN_CODE ( ERRCODE_CLASS_READ , WARN_SWG_POOR_LOAD ) ; >;
+        < "Document could not be completely saved." ; WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_POOR_LOAD ) ; >;
+        < "This HTML document contains %PRODUCTNAME Basic macros.\nThey were not saved with the current export settings."; WARN_CODE ( ERRCODE_CLASS_WRITE , WARN_SWG_HTML_NO_MACROS) ; >;
+        < "Error in writing sub-document $(ARG1)."; ERR_CODE ( ERRCODE_CLASS_WRITE , WARN_WRITE_ERROR_FILE ) ; >;
+        < "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col)."; ERR_CODE ( ERRCODE_CLASS_WRITE , WARN_FORMAT_FILE_ROWCOL ) ; >;
     };
 };
 
diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx
index 31074fb..46d325f 100644
--- a/uui/source/iahndl.cxx
+++ b/uui/source/iahndl.cxx
@@ -1298,14 +1298,10 @@ bool
 ErrorResource::getString(ErrCode nErrorCode, OUString &rString)
     const
 {
-    ResId aResId(static_cast< sal_uInt16 >(nErrorCode & ERRCODE_RES_MASK),
-                 *m_pResMgr);
-    aResId.SetRT(RSC_STRING);
-    if (!IsAvailableRes(aResId))
+    sal_uInt32 nIdx = m_aStringArray.FindIndex(nErrorCode & ERRCODE_RES_MASK);
+    if (nIdx == RESARRAY_INDEX_NOTFOUND)
         return false;
-    aResId.SetAutoRelease(false);
-    rString = aResId.toString();
-    m_pResMgr->PopContext();
+    rString = m_aStringArray.GetString(nIdx);
     return true;
 }
 
diff --git a/uui/source/iahndl.hxx b/uui/source/iahndl.hxx
index 6543b34..6e6cda4 100644
--- a/uui/source/iahndl.hxx
+++ b/uui/source/iahndl.hxx
@@ -32,6 +32,7 @@
 
 #include <tools/errcode.hxx>
 #include <tools/rc.hxx>
+#include <tools/resary.hxx>
 #include <tools/wintypes.hxx>
 
 #include <unordered_map>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list