diff --git a/core/include/fxcrt/fx_string.h b/core/include/fxcrt/fx_string.h
index df7dd0c..70f6493 100644
--- a/core/include/fxcrt/fx_string.h
+++ b/core/include/fxcrt/fx_string.h
@@ -428,62 +428,6 @@
 {
     return CFX_ByteString(str1, str2);
 }
-class CFX_StringBufBase 
-{
-public:
-
-    CFX_StringBufBase(FX_STRSIZE limit)
-    {
-        m_Size = 0;
-        m_Limit = limit;
-    }
-
-    FX_CHAR*	GetPtr() const
-    {
-        return (FX_CHAR*)(this + 1);
-    }
-
-    FX_STRSIZE	GetSize() const
-    {
-        return m_Size;
-    }
-
-    void		Empty()
-    {
-        m_Size = 0;
-    }
-
-    void		Copy(FX_BSTR str);
-
-    void		Append(FX_BSTR str);
-
-    void		Append(int i, FX_DWORD flags = 0);
-
-    CFX_ByteStringC		GetStringC() const
-    {
-        return CFX_ByteStringC((FX_CHAR*)(this + 1), m_Size);
-    }
-
-    CFX_ByteString		GetString() const
-    {
-        return CFX_ByteString((FX_CHAR*)(this + 1), m_Size);
-    }
-protected:
-
-    FX_STRSIZE	m_Limit;
-
-    FX_STRSIZE	m_Size;
-};
-template<FX_STRSIZE limit>
-class CFX_StringBufTemplate : public CFX_StringBufBase
-{
-public:
-
-    CFX_StringBufTemplate() : CFX_StringBufBase(limit) {}
-
-    FX_CHAR		m_Buffer[limit];
-};
-typedef CFX_StringBufTemplate<256> CFX_StringBuf256;
 class CFX_WideStringC 
 {
 public:
diff --git a/core/src/fxcrt/fx_basic_bstring.cpp b/core/src/fxcrt/fx_basic_bstring.cpp
index 895c8e5..ea9ca85 100644
--- a/core/src/fxcrt/fx_basic_bstring.cpp
+++ b/core/src/fxcrt/fx_basic_bstring.cpp
@@ -1137,28 +1137,3 @@
     FX_STRSIZE len = FX_ftoa(d, buf);
     return CFX_ByteString(buf, len);
 }
-void CFX_StringBufBase::Copy(FX_BSTR str)
-{
-    m_Size = str.GetLength();
-    if (m_Size > m_Limit) {
-        m_Size = m_Limit;
-    }
-    FX_CHAR* pBuffer = (FX_CHAR*)(this + 1);
-    FXSYS_memcpy32(pBuffer, str.GetPtr(), m_Size);
-}
-void CFX_StringBufBase::Append(FX_BSTR str)
-{
-    int len = str.GetLength();
-    if (len > m_Limit - m_Size) {
-        len = m_Limit - m_Size;
-    }
-    FX_CHAR* pBuffer = (FX_CHAR*)(this + 1);
-    FXSYS_memcpy32(pBuffer + m_Size, str.GetPtr(), len);
-    m_Size += len;
-}
-void CFX_StringBufBase::Append(int i, FX_DWORD flags)
-{
-    char buf[32];
-    int len = _Buffer_itoa(buf, i, flags);
-    Append(CFX_ByteStringC(buf, len));
-}
