convert rtl::OUString to char *

2013-09-24 Thread K.Misha
Hi!

 

I habe this code:

 

Reference  XTextDocument  xTextDocument (xWriterComponent,UNO_QUERY);

Reference XText  xText = xTextDocument-getText();

 

How can i convert xTextDocument-getText() to char * ?

 

I used to convert it like this:

 

int nLenOfAnsiChar = WideCharToMultiByte(CP_OEMCP, NULL,
xText-getString().pData-buffer, -1, NULL, 0, NULL, NULL );

char * str = new char(nLenOfAnsiChar);

WideCharToMultiByte(CP_OEMCP, NULL, xText-getString().pData-buffer,
nLenOfAnsiChar, str, nLenOfAnsiChar, NULL, NULL );

 

I converted it from unicode to ansi. But when i'm doing it in writer - i
have broken data. I think data here is in ANSI.

 

Thanks!

 



Re: convert rtl::OUString to char *

2013-09-24 Thread jg
WideCharToMultiByte() indicates that you are working on Windows. At first you need to convert to 
UTF16 (from UTF8), and then from UTF16 to the desired code page.


Have a look at 
http://code.msdn.microsoft.com/C-UTF-8-Conversion-Helpers-22c0a664 .

jg




Re: convert rtl::OUString to char *

2013-09-24 Thread Ariel Constenla-Haile
Hi,

On Tue, Sep 24, 2013 at 06:44:05PM +0300, K.Misha wrote:
 Hi!
 
  
 
 I habe this code:
 
  
 
 Reference  XTextDocument  xTextDocument (xWriterComponent,UNO_QUERY);
 
 Reference XText  xText = xTextDocument-getText();
 
  
 
 How can i convert xTextDocument-getText() to char * ?

First, the css.text.XText is not a string, use XTextRange::getString()
to get the rtl::OUString.

Then, convert the OUString to an OString and then use OString::getStr()

Reference XText  xText  = xTextDocument-getText();
const rtl::OUString uText = xText-getString();
const rtl::OString sText  = rtl::OUStringToOString( sText, 
RTL_TEXTENCODING_UTF8 );
const char *pzstr = sText.getStr();



Regards
-- 
Ariel Constenla-Haile
La Plata, Argentina


pgpge2XRd6BvB.pgp
Description: PGP signature


convert OUString to char *

2013-09-24 Thread K.Misha
I have this code, made with your example:

 

char * getWText( char * text )

{

  Reference  XTextDocument  xTextDocument
(xWriterComponent,UNO_QUERY);

Reference XText  xText = xTextDocument-getText();

 

  rtl::OUString uText = xText-getString();

  rtl::OString str = rtl::OUStringToOString( uText,
RTL_TEXTENCODING_UTF8 );

 

  char * str1 = (char *)str.getStr();

  return str1;

}

 

This is original file:



 

And this is my return str1:



 

What i'm doing wrong? =(



Change text in writer without changing style and formats

2013-09-24 Thread K.Misha
One more question... before changing text i have this:



 

 

Reference  XTextDocument  xTextDocument (xWriterComponent,UNO_QUERY);

Reference XText  xText = xTextDocument-getText();

 

  rtl::OUString uText = xText-getString();

  rtl::OString str = rtl::OUStringToOString( uText,
RTL_TEXTENCODING_MS_1251 );

  char * str1 = (char *) str.getStr();

 

  Reference  XTextDocument  xTextDocument
(xWriterComponent,UNO_QUERY);

  Reference XText  xText = xTextDocument-getText();

 

  int nLenOfWideCharStr =

MultiByteToWideChar(

CP_ACP,

MB_PRECOMPOSED,

str1,

-1,

NULL,

0

);

 

const wchar_t * wVal = (PWSTR)HeapAlloc(GetProcessHeap(), 0,
nLenOfWideCharStr * sizeof(WCHAR));

 

MultiByteToWideChar(

CP_ACP,

MB_PRECOMPOSED,

str1,

-1,

(wchar_t *)wVal,

nLenOfWideCharStr

);  

  ReferenceXTextCursor xTextCursor = xText-createTextCursor();

  xTextCursor-goRight(iStartAt, 0);

  xTextCursor-setString(wVal);

 

after this code all tables and other styles were deleted. How can i change
text without deleting it?

 



 



Re: convert OUString to char *

2013-09-24 Thread Ariel Constenla-Haile
On Tue, Sep 24, 2013 at 08:07:59PM +0300, K.Misha wrote:
 This is original file:
 
 
 
  
 
 And this is my return str1:
 
 

I see only empty lines here, no text, so I don't get what the difference
could be. But are you watching the value of str1 inside the debugger, or
just printing that to a console?

The code attached has non-ASCII characters, it prints the string
returned by OString::getStr() in the standard output; it works (all
characters are displayed) fine on Linux, but on Windows you may have to
do system specific stuff (didn't try it right now).
 

Regards
-- 
Ariel Constenla-Haile
La Plata, Argentina
/**
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * License); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */

#include cppuhelper/bootstrap.hxx

#include com/sun/star/beans/XPropertySet.hpp
#include com/sun/star/frame/FrameSearchFlag.hpp
#include com/sun/star/frame/XComponentLoader.hpp
#include com/sun/star/lang/XMultiServiceFactory.hpp
#include com/sun/star/text/XTextCursor.hpp
#include com/sun/star/text/XText.hpp
#include com/sun/star/text/XTextDocument.hpp
#include com/sun/star/text/XTextContent.hpp
#include com/sun/star/text/ControlCharacter.hpp
#include com/sun/star/uno/XComponentContext.hpp

#include iostream

namespace css = ::com::sun::star;
namespace ControlCharacter = css::text::ControlCharacter;
using rtl::OUString;


static const char DummyText[] = Als Gregor Samsa eines Morgens aus unruhigen 
Träumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer 
verwandelt. Er lag auf seinem panzerartig harten Rücken und sah, wenn er den 
Kopf ein wenig hob, seinen gewölbten, braunen, von bogenförmigen Versteifungen 
geteilten Bauch, auf dessen Höhe sich die Bettdecke, zum gänzlichen 
Niedergleiten bereit, kaum noch erhalten konnte. Seine vielen, im Vergleich zu 
seinem sonstigen Umfang kläglich dünnen Beine flimmerten ihm hilflos vor den 
Augen.\n»Was ist mit mir geschehen?« dachte er. Es war kein Traum, sein Zimmer, 
ein richtiges, nur etwas zu kleines Menschenzimmer, lag ruhig zwischen den vier 
wohlbekannten Wänden, über dem Tisch, auf dem eine auseinandergepackte 
Musterkollektion von Tuchwaren ausgebreitet war - Samsa war Reisender -, hing 
das Bild, das er vor kurzem aus einer illustrierten Zeitschrift ausgeschnitten 
und in einem hübschen, vergoldeten Rahmen untergebracht hatte. Es stellte eine 
Dame dar, die, mit einem Pelzhut und einer Pelzboa versehen, aufrecht dasaß und 
einen schweren Pelzmuff, in dem ihr ganzer Unterarm verschwunden war, dem 
Beschauer entgegenhob.\nGregors Blick richtete sich dann zum Fenster, und das 
trübe Wetter - man hörte Regentropfen auf das Fensterblech aufschlagen - machte 
ihn ganz melancholisch. »Wie wäre es, wenn ich noch ein wenig weiterschliefe 
und alle Narrheiten vergäße,« dachte er, aber das war gänzlich undurchführbar, 
denn er war gewöhnt, auf der rechten Seite zu schlafen, konnte sich aber in 
seinem gegenwärtigen Zustand nicht in diese Lage bringen. Mit welcher Kraft er 
sich auch auf die rechte Seite warf, immer wieder schaukelte er in die 
Rückenlage zurück. Er versuchte es wohl hundertmal, schloß die Augen, um die 
zappelnden Beine nicht sehen zu müssen und ließ erst ab, als er in der Seite 
einen noch nie gefühlten, leichten, dumpfen Schmerz zu fühlen begann.;


template  typename T 
css::uno::Reference T 
LoadComponent(
const css::uno::Reference css::uno::XComponentContext  xContext,
css::uno::Reference css::frame::XComponentLoader   xLoader,
const rtl::OUString rURL,
const css::uno::Sequence  css::beans::PropertyValue  rMediaDescriptor
= css::uno::Sequence  css::beans::PropertyValue (),
const rtl::OUString rFrame
= OUString( RTL_CONSTASCII_USTRINGPARAM( _blank ) ),
sal_Int32 nFrameSearchFlag = css::frame::FrameSearchFlag::ALL )
throw ( css::uno::Exception )
{
css::uno::Reference  T  xDoc;

try
{
if ( !xLoader.is() )
{
xLoader.set(
xContext-getServiceManager()-createInstanceWithContext(
OUString( RTL_CONSTASCII_USTRINGPARAM(
  com.sun.star.frame.Desktop ) ), xContext ),

Re: convert rtl::OUString to char *

2013-09-24 Thread jg

WideCharToMultiByte() indicates that you are working on Windows. At first you 
need to convert to UTF16 (from UTF8), and then from UTF16 to the desired code 
page.

Have a look at 
http://code.msdn.microsoft.com/C-UTF-8-Conversion-Helpers-22c0a664 .

jg



-
To unsubscribe, e-mail: api-unsubscr...@openoffice.apache.org
For additional commands, e-mail: api-h...@openoffice.apache.org