ANSI Zeichensatz in DBF-Datei

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
rassekst
UDF-Programmierer
UDF-Programmierer
Beiträge: 97
Registriert: Mi, 01. Feb 2006 23:49
Wohnort: Glauchau
Kontaktdaten:

ANSI Zeichensatz in DBF-Datei

Beitrag von rassekst »

Hallo xBase++ Programmierer,

Melde mich mal mit einem kleinem Problem zurück.

In der Beschreibung habe ich gelesen das der normale DBEDBF Treiber nur OEM Zeichensatz unterstützt. Wenn ich mir diese Dateien Binär ansehe ist das auch so.
Nun habe ich eine DBF aus einer Fremdanwendung. Diese ist aber in ANSI gespeichert.
Da ich diese Datei in einem Browser via XbpQuickBrowse() anzeige habe wird dort natürlich ein Umlaut falsch dargestellt.
Ich compiliere meine Programme alle mit der Option /ga (ANSI-OEM). Eine andere Einstellung brachte keine Verbesserung. AUCH SET CHAR TO ANSI/OEM brachte nichts :cry: .
Ich wollte auch nicht komplett auf ANSI umstellen. Werte aus der Datenbank mit ConvToOEMCP wandeln ist nicht das Problem.

Kann mir hier einer helfen ?

Schöne Grüsse aus Sachsen
Steffen
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: ANSI Zeichensatz in DBF-Datei

Beitrag von Martin Altmann »

Hallo Steffen,
rassekst hat geschrieben:Werte aus der Datenbank mit ConvToOEMCP wandeln ist nicht das Problem.
was genau ist denn dann Dein Problem?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
rassekst
UDF-Programmierer
UDF-Programmierer
Beiträge: 97
Registriert: Mi, 01. Feb 2006 23:49
Wohnort: Glauchau
Kontaktdaten:

Beitrag von rassekst »

Hallo Martin,

Das Problem ist das im Browser der ANSI Text angezeigt wird. Eine vorherige bzw. nachfolgende Wandlung ist im XbpQuickBrowse() nicht möglich oder mir nicht bekannt.

Gruss Steffen
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Steffen,
zeige doch mal bitte ein Stück Code...
Ein Beispiel: ziehe die Datenbank in ein Array (dabei kannst Du konvertieren, wo nötig) und browse das Array...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Beitrag von Sören »

Hallo Steffen,

mit der Xbase++ 1.9 können, soviel ich mitbekommen habe, auch Ansi-Daten in DBF's (DBFDBE) gespeichert bzw. (auch ohne Konvertierung) ausgelesen werden.

Ich selbst hab es noch nicht probiert, aber mit folg. Einstellung sollte es klappen:

DbeInfo( DBFDBE_ANSI, .T. )

Ich hoffe, es hilft Dir weiter!

Tschüs,
Sören
rassekst
UDF-Programmierer
UDF-Programmierer
Beiträge: 97
Registriert: Mi, 01. Feb 2006 23:49
Wohnort: Glauchau
Kontaktdaten:

Beitrag von rassekst »

Hallo Martin und Sören,

Zwecks Code... da passiert eigentlich nichts besonderes:

Code: Alles auswählen

oXbp := XbpQuickBrowse():new(oSuchDlg:drawingarea,,{0,30+IIF(nBeschr=NIL,0,60)},{oSuchDlg:drawingarea:currentSize()[1],oSuchDlg:drawingarea:currentSize()[2]-30-IIF(nBeschr=NIL,0,60)},{{ XBP_PP_COMPOUNDNAME, '8.Tahoma' }})
oXbp:style        := XBP_STYLE_SYSTEMDEFAULT
oXbp:hScroll      := lHScroll
// Zuweisung des Datenquellenobjektes
oXbp:dataLink     := DacPagedDataStore():new(SELECT(),aFelder)
oXbp:itemMarked   := {| aRowCol, uNIL, obj | DBGOTO(obj:getData()),IIF(nBeschr<>NIL,oBeschr:setData(STRTRAN(&(FIELDNAME(nBeschr)),';',CHR(13)+CHR(10))),NIL) }
oXbp:itemSelected := {| aRowCol, uNIL, obj | DBGOTO(obj:getData()),ret := IIF(cReturn=NIL,NIL,&cReturn),PostAppEvent(xbeP_Close,,,oSuchDlg)}
oXbp:create()
Ich versuche mein Problem nochmals anders zu formulieren:
Ich möchte in einem XbpQuickBrowse Objekt eine DBF im ANSI Format direkt anzeigen.

Die Idee find ich gut, weil ich dann die Daten Konvertieren kann. Aber dieser Notbehelf geht sicherlich nur beschrenkt, da ja ein Update der Datenquelle sehr aufwendig wäre.

Die Sache mit DBFDBE probiere ich.

Tschüß Steffen
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
rassekst hat geschrieben: In der Beschreibung habe ich gelesen das der normale DBEDBF Treiber nur OEM Zeichensatz unterstützt. Wenn ich mir diese Dateien Binär ansehe ist das auch so.
Nun habe ich eine DBF aus einer Fremdanwendung. Diese ist aber in
ANSI gespeichert. Da ich diese Datei in einem Browser via xbpQuickBrowse() anzeige habe wird dort natürlich ein Umlaut
falsch dargestellt.
1.) Frage : GUI (/PM:PM) oder Hybrid (Textmode) ?

Code: Alles auswählen

oXbp:dataLink     := DacPagedDataStore():new(SELECT(),aFelder)
da ich immer einen "vollen" XbpBrowse benutzte bin ich mir nicht sicher,
aber kann man in "aFelder" nicht auch eine Funktionen einsetzten ?
rassekst hat geschrieben: Ich versuche mein Problem nochmals anders zu formulieren:
Ich möchte in einem XbpQuickBrowse Objekt eine DBF im ANSI Format direkt anzeigen.
wie schon gesagt weiss ich nicht wie es bei Quickbrowse ist, aber eine
GUI (/PM:PM) Anwendung zeigt immer ANSI an. SET CHARSET bestimmt
nur wie die Daten im "Hauptspeicher" vorliegen und dementsprechend
für die "Anzeige" automatisch konvertiert werden müssen oder nicht.

gruss by OHR
Jimmy
rassekst
UDF-Programmierer
UDF-Programmierer
Beiträge: 97
Registriert: Mi, 01. Feb 2006 23:49
Wohnort: Glauchau
Kontaktdaten:

Beitrag von rassekst »

Hallo Jimmy

Ich benutze reinen GUI Modus.

ob aFelder auch Ausdrücke verkraftet muß ich ausprobieren.

Ich habe mal mit DBEINFO() probiert. Leider ohne Erfolg. So richtig werde ich hier auch nicht aus der Beschreibung schlau.

Grüsse Steffen
Antworten