Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Umlaute bei D7 ADO/Access (https://www.delphipraxis.net/206105-umlaute-bei-d7-ado-access.html)

cckLoud 19. Nov 2020 14:07

Datenbank: access • Version: ??? • Zugriff über: jetengine

Umlaute bei D7 ADO/Access
 
Ich bin neu hier - deshalb erst mal ein Hallo an das Forum.

Ganz unbedarft in Delphi bin ich nicht, früher war ich mal unter meinem Usernamen cckLoud im Delphitreff aktiv, vielleicht erinnert sich ja jemand ...

Aber nun zum Problem!
Ich habe so eine kleine Branchensoftware (ca. 540000 loc) in D7 geschrieben. Die läuft auch einwandfrei, jedenfalls bis gestern ein neuer Kunde das Produkt getestet hat - auf einem Surface-Rechner mit WIN 10.

Das Problem ist, dass

1. alle Umlaute in den Captions (Buttons, Labels) so UTF8-Mässig angezeigt werden (die fix über die IDE
vorgegeben sind)
2. wenn ich per ADO/SQL auf die DB zugreifen will, werden Teile des SQL-Strings entsprechend obiger
Weise verhachstückt. Da gibt es beim Insert into eine Fehlermeldung "unbekannter Feldname
'strai??e'" wobei das "ai??" für seltsame Zeichen steht, die ich (??) nicht auf der Tastatur habe.
in dem SQL-String steht hier eindeutig "Straße"

3. wenn ich Strings aus der Datenbank (ACCESS/JetEngine über ADO)und ausgebe (zB in ein Edit-Feld),
dann passiert das Selbe wie bei den Captions

Das ganze hat zweifellos was mit UTF zu tun. Nur bei allen anderen Kunden passiert das nicht. Wie kann zB das mit der IDE als Ansi abgelegt (und als Resource gespeichert). Ich denke, das hat mit einer Win-Einstellung zu tun, die bei Dateizugriffen einen UTF-Wandler zwischenschaltet. Ich habe mich jetzt seit 4 Tagen im INet rumgetrieben, aber nix brauchbares gefunden. Vielleicht kennt ja jemand von euch das Problem und weiss Abhilfe?

Bernhard Geyer 19. Nov 2020 14:52

AW: Umlaute bei D7 ADO/Access
 
Wenn du unter D7 mit ADO/dbGo darauf zugreifst dürfte da nix von Windows dazwischen funken.
Oder nutzt du hier dbExpress?

cckLoud 19. Nov 2020 15:33

AW: Umlaute bei D7 ADO/Access
 
Nein, ich nutze ADO. Und dass da Win zwischenfunkt, hätte ich auch nicht gedacht.

Aber danach sieht es halt aus. Ich würde das bei 2 und 3 im Bereich des COM-Marshallers ansiedeln, da ich korrekte SQL abliefere, und bei der JET-Enging offensichtlich Müll ankommt.

Und auch bei 1: soweit mir bekannt, speichert die Maskendefinitionen als Resourcen, und ds Lesen derselben erfolgt über ein WIN-Funktion... Wie sonst könnte auch in D7 "intern" UTFirgendwas zun Zug kommen?

tggmx 21. Nov 2020 10:21

AW: Umlaute bei D7 ADO/Access
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es gibt in Windows 10 mittlerweile eine nette kleine gut versteckte Checkbox in den Regions-Einstellungen ("Beta: Unicode UTF-8 Unterstützung...") die wahrscheinlich nicht ganz ohne Hintergrund mit "Beta" bezeichnet ist. Prüfe mal ob diese Option bei deinem Kunden aktiv ist. Abschalten sollte die Lösung für dein Problem sein.

cckLoud 21. Nov 2020 11:01

AW: Umlaute bei D7 ADO/Access
 
Danke für den Tip, hört sich gut an. Werde ich auprobieren (lassen), geht aber natürlich heute nicht - Wochenende!

Ich geb aber Bescheid!

Bernhard Geyer 21. Nov 2020 11:39

AW: Umlaute bei D7 ADO/Access
 
Zitat:

Zitat von cckLoud (Beitrag 1477548)
Wie sonst könnte auch in D7 "intern" UTFirgendwas zun Zug kommen?

Es gibt doch diese ein Unit die verspricht die alten Delphi-Version mit Unicode-Support aufzurüsten.
hast du evtl. diese im Einsatz?

Bernhard Geyer 21. Nov 2020 11:40

AW: Umlaute bei D7 ADO/Access
 
Zitat:

Zitat von tggmx (Beitrag 1477681)
Es gibt in Windows 10 mittlerweile eine nette kleine gut versteckte Checkbox in den Regions-Einstellungen ("Beta: Unicode UTF-8 Unterstützung...") die wahrscheinlich nicht ganz ohne Hintergrund mit "Beta" bezeichnet ist. Prüfe mal ob diese Option bei deinem Kunden aktiv ist. Abschalten sollte die Lösung für dein Problem sein.

Wieso baut man in einem OS das seit über 20 Jahren eine auf (inital UCS2, ab Wk2 UTF-16-Basiert) sowas noch ein?
Das verursacht doch mehr Problem als es löst?

cckLoud 21. Nov 2020 12:00

AW: Umlaute bei D7 ADO/Access
 
Weil es abertausende Anwendungen gibt, die mit Ansi laufen?

Klar, man könnte natürlich auf zB Rio umsteigen, aber so einfach ist das nicht, wenn das auch immer wieder kolportiert wird.

Auch wir haben uns Rio besorgt und die Umstellung war auch tatsächlich in 3 Tagen durch. Sollte man meinen, denn im Detail war es nicht so, wie man es erwartete - zB bei Grids gibt es massive Probleme, die werden nicht korrekt dargestellt und müssen fast alle nachgearbeitet werden. Und das dauert, schliesslich hat das Programm so ungefähr 500 Masken und Frames. Und dann muss man ausgiebig testen, sonst rassten die Kunden aus. Und die laufenden Weiterentwicklungen nicht vergessen!
Also bei uns dauert das noch mindestens 3/4 Jahre, bis wie das Programm launchen können. Und so lange sind wir froh darüber, dass es einen Kompatibilitätsmodus gibt, auch wenn die IDE des Öfteren mal win10 freezed!

Delphi.Narium 21. Nov 2020 12:24

AW: Umlaute bei D7 ADO/Access
 
Zitat:

Zitat von tggmx (Beitrag 1477681)
Es gibt in Windows 10 mittlerweile eine nette kleine gut versteckte Checkbox in den Regions-Einstellungen ("Beta: Unicode UTF-8 Unterstützung...") die wahrscheinlich nicht ganz ohne Hintergrund mit "Beta" bezeichnet ist. Prüfe mal ob diese Option bei deinem Kunden aktiv ist. Abschalten sollte die Lösung für dein Problem sein.

Die Einstellung ist in der Registry zu finden, siehe u. a. hier: https://administrator.de/forum/gebie...en-520319.html
Damit wäre es dann möglich den Wert abzufragen und wenn er gesetzt sein sollte, den Anwender darauf hinzuweisen, dass mit dieser Einstellung ein korrekter Programmbetrieb nicht möglich ist. (Sofern sich herausstellen sollte, dass dies die Fehlerursache ist.)

Bernhard Geyer 21. Nov 2020 12:52

AW: Umlaute bei D7 ADO/Access
 
Zitat:

Zitat von cckLoud (Beitrag 1477687)
Weil es abertausende Anwendungen gibt, die mit Ansi laufen?

Und da hilft eine Option die dann an irgendwelchen stellen statt Ansi-String UTF8-Codierung liefert?

Zitat:

Zitat von cckLoud (Beitrag 1477687)
Klar, man könnte natürlich auf zB Rio umsteigen, aber so einfach ist das nicht, wenn das auch immer wieder kolportiert wird.

Klar kostet es zeit umzustellen. Aber besser heute als morgen.
Wir konnten auch erst zu XE6-Zeiten umstellen und sind mit den nächsten Sprung bei 10.2.
Im nachhinein betrachtet hätte man die Umstellung noch früher durchziehen müssen um nach der abkündigung der Win9x/ME-Schiene nicht mit einer Unproduktiveren IDE arbeiten zu müssen.

Zitat:

Zitat von cckLoud (Beitrag 1477687)
Auch wir haben uns Rio besorgt und die Umstellung war auch tatsächlich in 3 Tagen durch. Sollte man meinen, denn im Detail war es nicht so, wie man es erwartete

Eine Umstellung hängt immer davon ab wie man bisher die VCL verwendet hatte.
Bei uns war es "einfacher", da wir schon seit Jahren (mit D6) Unicode unterstütz hatten und vieles mit einem eigenen String-Typ (MyType = WideString) gearbeitet hatten, so das wir schon viele Stellen "entschärft" hatten. Auch hat unsere Bibliothek (ElPack) uns hier nur realtive "einfache" Hürden beim Update auf aktueller XE6-Version steine in den Weg gelegt.

Zitat:

Zitat von cckLoud (Beitrag 1477687)
Und dann muss man ausgiebig testen, sonst rassten die Kunden aus. Und die laufenden Weiterentwicklungen nicht vergessen!

Kenne ich. Aber vor allem das Theme "Weiterentwicklung" geht mit einer modernen Version schneller. An manchen stellen um Welten schneller, da man statt 3th-Party-Kompos auszusuchen einfach das nimmt was dabei ist.

Zitat:

Zitat von cckLoud (Beitrag 1477687)
Also bei uns dauert das noch mindestens 3/4 Jahre, bis wie das Programm launchen können.

Immerhin seit ihr darüber. Und die 3/4 Jahr geht auch vorrüber. Und dann endlich IDE-Sprachfeature "aus dem Vollen schöpfen" können :-)

Zitat:

Zitat von cckLoud (Beitrag 1477687)
Und so lange sind wir froh darüber, dass es einen Kompatibilitätsmodus gibt, auch wenn die IDE des Öfteren mal win10 freezed!

Schaut eher nach einen Win10 (Grafik-treiber) aus.
Das die IDE-Freezed kann passieren. Aber wenn das OS auch mit eingefrohren wird liegt noch woanders ein Problem vor.

cckLoud 21. Nov 2020 13:51

AW: Umlaute bei D7 ADO/Access
 
Zitat:

Und da hilft eine Option die dann an irgendwelchen stellen statt Ansi-String UTF8-Codierung liefert?
Nein, das hast du falsch interpretiert. Es geht nicht darum, dass wir Unicode verwenden WOLLEN (das Programm wird vermutlich die nächsten 1000 Jahre nicht in China verwendet werden), sondern dass das Programm "von aussen" Unicode geliefert kriegt. Da werden zB Captions so angezeigt, als würde Unicode "geliefert", obwohl der Text in der IDE fest vorgegeben ist. Da werden Texte per ADO/Jetengine gespeichert und beim neuerlichen Anzeigen (die Daten werden wieder aus der DB gelesen) steht dann UTF-Müll statt Umlauten in Memos und Editfeldern. Bei allen andern Kunden funktioniert das einwandfrei, nur bei einem Knden eben nicht. Ich vermute mal (weil das zu den Symptomen passen würde), dass bei ihm die Option aktiviert ist, warum auch immer! Aber am Montag wird man sehen.
Jetzt könnte man sagen, was macht schon ein einziger Kunde? Aber Tatsache: de Erfahrung lehrt mich, dass wwenn das bei einem Kunden auftritt, dann bald auch bei anderen Kunden...

Zitat:

Eine Umstellung hängt immer davon ab wie man bisher die VCL verwendet hatte.
Da hatte ich keine Probleme, obwohl ich Widestring nur seltenst verwendet habe. Probleme mir UFT gab es nur bei dem Formelparser, der musste an das Mehrbyte-Wirrwarr angepasst werden. Nein, das Problem ist, dass die Grids anders reagieren, da werden Zeichen doppelt geschrieben usw. An sich keine Sache, lässt sich in OnPaint alles korrigieren, aber das muss man erst mal tun. Nebenbei, dafür habe ich mir eine Hilfskomponente geschrieben (unter D10.3), die da einiges übernimmt (zB Spaltenbreite, Spaltenformate, Zahlen einlesen, Überschriften und, wichtig für die Übersichlichkeit, Spalten lassen sich mt Namen ansprechen). Aber auch das muss erst in die Routinen rein ...

Zitat:

Aber vor allem das Theme "Weiterentwicklung" geht mit einer modernen Version schneller.
Und was nutzt mir das? Da sind zB gesetzliche Vorschriften, die sich Ändern. Was nutzt es darauf zu verweisen, dass die in der nächsten Version auch drin sind?

Zitat:

... man statt 3th-Party-Kompos auszusuchen ...
Bei mir sind nur die Standardkompos drin oder solche, die ich selbst geschrieben habe. Sonst freut man sich, wenn man nach ein paar Jahren nach einer neuen Version sucht, und die Entwickler gibts nicht mehr...

Zitat:

Schaut eher nach einen Win10 (Grafik-treiber) aus.
Vielleicht. Hab mir schon die Finger wund gesucht und nix brauchbares zu Lösung gefunden. Der Masken-Editor in D7 bringt regelmässig WIN10 zum stehen, alles eingefroren. >Da hift nur noch der (lange) Druck auf den Einausschalter und neu starten. Macht Freude, oder?

Bernhard Geyer 21. Nov 2020 18:36

AW: Umlaute bei D7 ADO/Access
 
Zitat:

Zitat von cckLoud (Beitrag 1477694)
Nein, das hast du falsch interpretiert. Es geht nicht darum, dass wir Unicode verwenden WOLLEN (das Programm wird vermutlich die nächsten 1000 Jahre nicht in China verwendet werden), sondern dass das Programm "von aussen" Unicode geliefert kriegt.

Die Frage war ja eher an Microsoft gerichtet.
Wenn diese Option wie vermutet bei Ansi-Programmen so quer schießt bedeutet das vermutlich das 99% dieser Programme angepasst werden müssen damit sie wieder

Zitat:

Zitat von cckLoud (Beitrag 1477694)
Ich vermute mal (weil das zu den Symptomen passen würde), dass bei ihm die Option aktiviert ist, warum auch immer! Aber am Montag wird man sehen.
Jetzt könnte man sagen, was macht schon ein einziger Kunde? Aber Tatsache: de Erfahrung lehrt mich, dass wwenn das bei einem Kunden auftritt, dann bald auch bei anderen Kunden...

Gut wenn man das rechtzeitig merkt bevor es MS als Standardwert einstellt und nach einem Windows-Update alle Kunden sich melden...


Zitat:

Nein, das Problem ist, dass die Grids anders reagieren, da werden Zeichen doppelt geschrieben usw.
Ich glaube mit einem kleinen Testprogramm und dem Standard VCL-Grit hatte ich auch Probleme mit neuen Delphi-Versionen.
Aber da das nur im Testprogramm aber nicht in der Anwendung ist (Dort haben wir andere Grids) war das kein Problem.

Zitat:

Und was nutzt mir das? Da sind zB gesetzliche Vorschriften, die sich Ändern. Was nutzt es darauf zu verweisen, dass die in der nächsten Version auch drin sind?
Mir geht es darum das mit neuen Delphi-Versionen manche sagen in Minuten zu erledigen sind statt Hunderte Quellcodezeilen für irgendwelche dummen Ableitungen zu haben weil man noch kein Generics oder "Build-In-JSON-SUpport" hat ...
Aber du musst halt noch das 3/4 Jahr überstehen...


Zitat:

Bei mir sind nur die Standardkompos drin oder solche, die ich selbst geschrieben habe. Sonst freut man sich, wenn man nach ein paar Jahren nach einer neuen Version sucht, und die Entwickler gibts nicht mehr...
Wenn man den Quellcode hat (sollte man immer haben) ist da auch kein Problem.
Die Anpassungen sind mittlerweile sehr überschaubar zwischen den Delphi-Versionen. Der größte"Break" war D2009 mit Unicode.


Zitat:

Der Masken-Editor in D7 bringt regelmässig WIN10 zum stehen, alles eingefroren. >Da hift nur noch der (lange) Druck auf den Einausschalter und neu starten. Macht Freude, oder?
Wie gesagt: Da stimmt was anderes nicht. Die Delphi-IDE hat eigentlich nur indirek über schlechte Grafikkartentreiber die Chance den Rechner zum Hängen zu bringen.
Direkt eigentlich nur soweit das du soviel GUI-Ressourcen anforderst das Windows kein "Fenster mehr öffnen" kann (oder alle 100 ms ein neues Fenster hochpoppen lassen)

cckLoud 23. Nov 2020 11:34

AW: Umlaute bei D7 ADO/Access
 
Schlechte Neuigkeiten: diese Option wars leider nicht. Der Kunde hat nachgeschaut - nicht aktiviert. Dann hat er den Haken reingemacht, Win neu gestartet - der selbe Effekt. Dann Haken raus (ich kenne im Regionenbereich Winprobleme (Zahlenformate), die sich beheben lassen, indem man das angezeigte "Deutsch" erst ändert und dann wieder einsetzt) und neu gestartet, aber keine Änderung...

Hat vielleicht noch jemand eine Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz