ot4xb

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

ot4xb

Beitragvon Benz » Di, 08. Nov 2016 15:03

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
Benz
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 413
Registriert: Mo, 30. Mai 2011 14:06

Re: ot4xb

Beitragvon georg » Di, 08. Nov 2016 15:08

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.
Liebe Grüsse aus der Eifel,

Georg
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1780
Registriert: Fr, 08. Feb 2008 21:29

Re: ot4xb

Beitragvon Jan » Di, 08. Nov 2016 15:11

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11630
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: ot4xb

Beitragvon brandelh » Di, 08. Nov 2016 15:23

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.
Dateianhänge
ot4xb-Hilfedatei.zip
Die Datei fehlt auf dem Server, hänge ich sie mal hier an
(270.08 KiB) 19-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13332
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: ot4xb

Beitragvon Benz » Di, 08. Nov 2016 15:35

ok super, jetzt funktioniert es, vielen Dank! :)
Benz
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 413
Registriert: Mo, 30. Mai 2011 14:06

Re: ot4xb

Beitragvon AUGE_OHR » Mi, 09. Nov 2016 19:16

habe in die Wissensbasis die Devcon 2007 / 2012 Unterlagen von Pablo gelegt
http://www.xbaseforum.de/viewtopic.php?f=16&t=9480
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10211
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg


Zurück zu Allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast