Seite 1 von 1

ot4xb

Verfasst: Di, 08. Nov 2016 15:03
von Benz
Hi,

Ich höre immer viel von ot4xb, nur leider steht nirgends so richtig (oder ich habe zu wenig gesucht), wo man ot4xb bekommt und was fast noch wichtiger ist, wie ich das in Xbase++ benutzen kann.
Ich versuche schon seit längerem immer wieder UTF-8 Text so in Xbase++ umzuwandeln, dass auch die Sonderzeichen richtig in der dbf stehen.
Die Lösung scheint cUTF8toAnsi zu sein, die es wohl in der ot4xb zu geben scheint, aber wie ich da rankomme habe ich leider bis heute nicht verstanden, deshalb heute mal meine Bitte an euch, könntet ihr mir vielleicht einen gültigen Link dafür schicken und eine kurze Beschreibung wie ich das einbaue, am besten mit einem kleinen Beispielcode?

Vielen Dank schonmal und viele Grüße

Re: ot4xb

Verfasst: Di, 08. Nov 2016 15:08
von georg
Hallo,


letztens bekam man OT4XB unter der Adresse xbwin.com.

Es handelt sich um eine Zusatzbibliothek für Xbase++, die verschiedene Funktionalitäten erlaubt, wie das von Dir genannte Konvertieren.

Re: ot4xb

Verfasst: Di, 08. Nov 2016 15:11
von Jan
Wenn es Dir nur um UTF8 nach ANSI geht:

Code: Alles auswählen

FUNCTION UTF8ToAnsi(cUtf8)

LOCAL cMBtoW
LOCAL cWToMB
LOCAL nWideChars
LOCAL cPlainUnicode
LOCAL nCodepage
LOCAL nBytes
LOCAL cAnsi

/*
Guenter Beyes <gbeyes at gmx.de>
Freitag, 10. März 2006 12:10
public.xbase++.generic
Re: UTF-8 conversion
*/

// UTF-8 code-page identifier.
#DEFINE CP_UTF8 65001

cMBtoW := DllPrepareCall("kernel32.dll", DLL_STDCALL, "MultiByteToWideChar")

cWToMB := DllPrepareCall("kernel32.dll", DLL_STDCALL, "WideCharToMultiByte")

// First convert UTF-8 to plain Unicode:

// Add string terminator just to be safe.
cUTF8 += chr(0)

// Get number of resulting wide characters.
nWideChars := DllExecuteCall(cMBtoW, CP_UTF8, 0, cUTF8, -1, 0, 0)

// Provide a sufficient buffer.
cPlainUnicode := Space(2 * (nWideChars + 1))

// Do the conversion.
nWideChars := DllExecuteCall(cMBtoW, CP_UTF8, 0, cUTF8, -1 , ;
                             @cPlainUnicode, nWideChars + 1)

// Strip Unicode string terminator.
// (NOT, because it's needed in the  next step. )
// cPlainUnicode := left( cPlainUnicode, 2*(nWideChars - 1) )

// Now convert plain Unicode to ANSI,
// using the current ANSI code page:

// Get current ANSI code-page identifier.

nCodepage := DllCall("kernel32.dll", DLL_STDCALL, "GetACP")

// Get number of resulting bytes.
nBytes   := DllExecuteCall(cWToMB, nCodepage, 0, cPlainUnicode, -1, ;
                           0, 0, 0, 0)

// Provide a sufficient buffer.
cAnsi   := Space(nBytes + 1)

// Do the conversion.
nBytes   := DllExecuteCall(cWToMB, nCodePage, 0, cPlainUnicode, -1, ;
                           @cAnsi, nBytes + 1, 0, 0)

// Strip ANSI string terminator.
cAnsi := Left(cAnsi, nBytes - 1)

RETURN cAnsi
Ich verwende auch schon mal ot4xb, weil da Funktionen drin sind die wichtig sind. Und in Xbase++ fehlen. Allerdings sind manche der Funktionen mir einfach zu sperrig und tewwleise auch zu langsam.

Runterladen kannst Du Dir das von www.xbwin.com. da gibt es auch ein Forum. Manche Sachen mußt Du da nachsehen, weil die in der Doku nicht immer alle drin stehen (hauptsächlich Anwendungsbeispiele).

Jan

Re: ot4xb

Verfasst: Di, 08. Nov 2016 15:23
von brandelh
genau, das ist die Adresse von Pablo:

:arrow: http://www.xbwin.com/

Seit der Neugestaltung seiner Web-Site finde ich mich auch nicht mehr so gut zurecht ;-)

Was man braucht ist ...
1. die OT4XB.DLL (mit LIB und CH): "Download ot4xb Package"
2. Dokumentation ... ein heikles Thema ;-) ... "unsortiere Dokumente" ... http://www.xbwin.com/doc/ot4xb-docs/
3. Es gab eine schöne alte Hilfedatei, aber die wird ja immer weniger unterstützt ... ach da ganz unten :arrow: http://www.xbwin.com/download/ot4xb/
4. OT4XB.DLL im Programmverzeichnis der erzeugten EXE oder im Pfad und während Entwicklung noch OT4XB.LIB und OT4XB.CH z.B. im Pfad von Xbase++
5. im Quellcode: #include "OT4XB.CH" ...
6. Funktionen verwenden, wie jede normale Xbase++ Funktion auch.

Re: ot4xb

Verfasst: Di, 08. Nov 2016 15:35
von Benz
ok super, jetzt funktioniert es, vielen Dank! :)

Re: ot4xb

Verfasst: Mi, 09. Nov 2016 19:16
von AUGE_OHR
habe in die Wissensbasis die Devcon 2007 / 2012 Unterlagen von Pablo gelegt
http://www.xbaseforum.de/viewtopic.php?f=16&t=9480