Umlaute in Listbox korrekt anzeigen lassen [Erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Timn97
Rookie
Rookie
Beiträge: 15
Registriert: Do, 19. Apr 2018 11:45

Umlaute in Listbox korrekt anzeigen lassen [Erledigt]

Beitrag von Timn97 »

Hallo zusammmen ,
Ich habe ein kleines Problem .. und zwar lasse ich beim Aufrufen meines Programmes Personen aus einer Datenbank in eine Listbox schreiben, manche Personen haben natürlcih ein ä,ö oder ü im Vor oder Nachnamen. In der Listbox werden aber irgendwelche Zeichen übergeben . Wie schaffe ich es bzw was muss ich schreiben um den richtigen Zeichensatz in xbase benutzen zu können ?:)

Mfg Tim
Zuletzt geändert von Timn97 am Di, 26. Jul 2022 15:35, insgesamt 1-mal geändert.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umlaute in Listbox korrekt anzeigen lassen

Beitrag von brandelh »

Hi,

du solltest in der Hilfe das Kapitel mit ANSI / OEM Wandlung lesen: :arrow: SET CHARSET (in der 2.0)
Grundsätzlich macht Xbase++ das automatisch richtig, nur API Aufrufe sind mit den conv...() Funktionen umzusetzen.

EXE - kann ANSI oder OEM sein => SET CHARSET TO
DBFCDE / DBFNTX sind immer OEM und werden wenn nötig beim Lesen und schreiben von der EXE richtig umgesetzt.
FOXDBE / FOXCDX richten sich bei der Erstellung nach der Codepage der EXE, danach wieder voll transparent eigentlich immer richtig.
XbpControls() sind zwar intern die ANSI Controls, aber die EXE setzt das zur Laufzeit um !

Es gibt noch einen Compiler Schalter /GA /GO, der sich auf den Zeichensatz des Quellcodes auswirkt, aber nicht beim Laden der Daten aus der DBF.

Zeig doch mal, was am Anfang der MAIN Funktion zu SET CHARSET steht.
Und dann den Code der die Listbox füllt.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Umlaute in Listbox korrekt anzeigen lassen

Beitrag von Jan »

Noch eine kleine Ergänzung zu Huberts Anmerkungen zur FOXCDX: Das ist immer das, was bei der Erstellung der dbf durch das Programm als SET CHARSET gewählt war. Also entweder der Standard (wenn es die Zeile nirgends gibt), oder eben das, was in der Zeile steht.

Wenn das nicht mit dem Zeichensatz im Programm übereinstimmt, mußt Du den Inhalt der dbf vor dem Hinzufügen zur Listbox konvertieren, also ConvToAnsiCP(alias->feldname) bzw. ConvToOEMCP(alias->feldname).

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Umlaute in Listbox korrekt anzeigen lassen

Beitrag von Tom »

Wenn das nicht mit dem Zeichensatz im Programm übereinstimmt, mußt Du den Inhalt der dbf vor dem Hinzufügen zur Listbox konvertieren
Nee, musst Du eigentlich nicht. Wie Hubert schrieb: Das macht Xbase++ automatisch. Mit ConvTo... hantieren muss man genau genommen nur bei externen Datenquellen, also Krempel, der an den DBEs vorbeigeht, über DLLs importiert wird oder irgendwie direkt von der Platte stammt.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Umlaute in Listbox korrekt anzeigen lassen

Beitrag von Jan »

Tom,

Du hast natürlich Recht. Bei unterschiedlichen oder abweichenden Zeichensätzen in den dbf konvertiert Xbase++ das automatisch. Das manuelle Konvertieren muß bei externen Strings passieren.

Wobei ich massivste Probleme hatte bei ANSI dbf, ANSI Quellcode, SET CHARSET TO ANSI, und Textoberfläche. Da hat nichts geholfen, ich mußte das CHARSET wieder raus nehmen. Unter GUI (und davon reden wir ja hier vermutlich) ist das natürlich kein Problem.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Umlaute in Listbox korrekt anzeigen lassen

Beitrag von brandelh »

Zur FOXCDX ... bei diesem Format wird ja der Zeichensatz im Header gespeichert, daher kann Xbase++ das erkennen und darauf reagieren.
Es gab schon DBF Dateien, z.B. von AmiPro, welche grundsätzlich ANSI gespeichert hatten. Bei diesen war es im Header nicht erkennbar oder clipper hat es nur nicht interresiert.
Damit hatte man schon Ärger.

Wäre die Umsetzung 1:1 in beide Richtungen machbar, wäre es ja kein Problem, aber dem ist nicht immer so. § z.B. oder (c) bzw. (r) - weiß jetzt nicht mehr welches.
Aus diesen Beispielen wird klar, am Besten man vermeidet, dass eine Konvertierung nötig wird.
Gruß
Hubert
Timn97
Rookie
Rookie
Beiträge: 15
Registriert: Do, 19. Apr 2018 11:45

Re: Umlaute in Listbox korrekt anzeigen lassen

Beitrag von Timn97 »

Vielen Dank für die vielen Antworten :) bei mir passt jz alles habe was am Schalter verändert (/ga) das hat dann schon gereicht :D
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Umlaute in Listbox korrekt anzeigen lassen

Beitrag von Tom »

Dann kommen die Daten in der Listbox aber nicht aus Tabellen, sondern sind hardcodiert, richtig? Sowas beispielsweise:

Code: Alles auswählen

LOCAL aGeschlechter := {'Männlein','Weiblein'}
Herzlich,
Tom
Antworten