Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

ot4xb

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 30. Mai 2011 15:06

ot4xb

Beitrag von 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

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

Re: ot4xb

Beitrag von 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

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 12310
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: ot4xb

Beitrag von 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
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13768
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: ot4xb

Beitrag von 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) 35-mal heruntergeladen
Gruß
Hubert

Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 30. Mai 2011 15:06

Re: ot4xb

Beitrag von Benz » Di, 08. Nov 2016 15:35

ok super, jetzt funktioniert es, vielen Dank! :)

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10580
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: ot4xb

Beitrag von 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

Antworten