AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Umlaute // Lazarus 1.4.2 mit Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Umlaute // Lazarus 1.4.2 mit Datenbank

Ein Thema von manfred_h · begonnen am 16. Sep 2015 · letzter Beitrag vom 2. Nov 2015
Antwort Antwort
Seite 3 von 4     123 4      
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#21

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 1. Okt 2015, 15:11
Hallo zusammen

Wollte Euch nur ein kleines Update über den Stand der Dinge geben:
Leider bis jetzt noch keinen Erfolg. Der Support hat aber ein Problem im FPC gefunden:
Zitat:
As I said earlier, there is a problem in FPC itself.
Delphi-Quellcode:
procedure TDataSet.DataConvert(aField: TField; aSource, aDest: Pointer;
  aToNative: Boolean);

 // There seems to be no WStrCopy defined, this is a copy of
 // the generic StrCopy function, adapted for WideChar.
 Function WStrCopy(Dest, Source:PWideChar): PWideChar;
 var
   counter : SizeInt;
 Begin
   counter := 0;
   while Source[counter] <> #0 do
   begin
     [B]Dest[counter] := char(Source[counter]); //<<< here should be WideChar instead of char , so it loses all unicode chars[/B]
     Inc(counter);
   end;
   { terminate the string }
   Dest[counter] := #0;
   WStrCopy := Dest;
 end;
Hier gehts im Support Forum weiter:
http://talk.remobjects.com/t/german-...azarus/6041/29

Shalom
Manfred
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#22

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 1. Okt 2015, 17:44
Es wird aber auch durch mehrfache Wiederholung von denen nicht richtiger, das die denken, das da Fehler in Lazarus sind. Wahrscheinlich ist da ein Fehler in der zusammenarbeit zwischen deren Komponenten und der Lazarus Funktionsweise, aber das ist dann ganz wo anders zu beheben als irgendwo an den fpc sourcen was zu patchen. Wäre jedenfalls meine Sicht der Dinge.

Siehe Anhang: ist enfach mal UTF8 Inhalt von http://www.columbia.edu/~kermit/utf8.html
in unser ERP System eingefügt und das wird sowohl in BRP (geschrieben mit Lazarus) als auch in IBExpert (geschrieben mit Delphi) korrekt dargestellt.
Miniaturansicht angehängter Grafiken
utf8.png  
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung

Geändert von IBExpert ( 1. Okt 2015 um 17:46 Uhr)
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#23

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 2. Okt 2015, 22:03
Hier das neueste Update:

Sieht im Moment nicht so gut aus...

Zitat:
the main difference between Delphi and Lazarus: Delphi uses UTF16 for unicode support in comparing Lazarus that uses UFT8 ...
RO/DA use UTF16 for unicode support because it other our platforms (.NET/Cocoa/etc) also use UTF16.

as a workaround, you can use my suggestion from previous post and manually convert UTF16 into UTF8
another solution is convert UTF16 to UTF8 by request in OnGetText event
Delphi-Quellcode:
procedure TForm1.tbl_test31144_utf8WSTRGetText(Sender: TDACustomField;
  var Text: string; DisplayText: boolean);
begin
  if Sender.DataType = datWideString then Text := UTF8Encode(Sender.asWideString);
end;
Zitat:
in this case, data in grid will be shown correctly, but it will require fix in TDataSet.DataConvert, also manual encoding will be required if you wanted to use UTF16 string in lazarus controls like edit/memo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 2. Okt 2015, 23:01
Hier das neueste Update:

Sieht im Moment nicht so gut aus...

Zitat:
the main difference between Delphi and Lazarus: Delphi uses UTF16 for unicode support in comparing Lazarus that uses UFT8 ...
RO/DA use UTF16 for unicode support because it other our platforms (.NET/Cocoa/etc) also use UTF16.

as a workaround, you can use my suggestion from previous post and manually convert UTF16 into UTF8
another solution is convert UTF16 to UTF8 by request in OnGetText event
Delphi-Quellcode:
procedure TForm1.tbl_test31144_utf8WSTRGetText(Sender: TDACustomField;
  var Text: string; DisplayText: boolean);
begin
  if Sender.DataType = datWideString then Text := UTF8Encode(Sender.asWideString);
end;
Zitat:
in this case, data in grid will be shown correctly, but it will require fix in TDataSet.DataConvert, also manual encoding will be required if you wanted to use UTF16 string in lazarus controls like edit/memo
Lazarus geht mit ihren UTF8-Weg schon ziemlich einen ungewöhnlichen Weg. Viele Systeme (.NET/Java/Windows/Delphi) gehen den UTF-16 Weg.
Trotzdem sollte eine Bibliothek die man (kostenpflichtig? Kauft) schon alle Eigenheiten des Unterstützen System berücksichtigen und nicht sagen: "Wir machen es in allen Systemen anders, also passt ihr euch an".
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#25

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 3. Okt 2015, 08:59
Lazarus geht mit ihren UTF8-Weg schon ziemlich einen ungewöhnlichen Weg. Viele Systeme (.NET/Java/Windows/Delphi) gehen den UTF-16 Weg.
Einspruch: https://en.wikipedia.org/wiki/UTF-8
"UTF-8 is the dominant character encoding for the World Wide Web, accounting for 85.1% of all Web pages in September 2015"
UTF16 ist durch Windows weit verbreitet, wer sich aber mal eine typische Textdatei im Hex Editor anschaut, sieht sofort die Nachteile von UTF16, denn wie der Name schon beeinhaltet, ist für jedes Zeichen immer mindestens 2 Byte Platz erforderlich, auch wenn da nur Ascii Zeichen wie A-Z und 0-9 drin stehen. Das betrifft im westeuropäischen Sprachraum sicherlich den Großteil aller Daten. Die Dateien sind daher bei gleichem Inhalt fast doppelt so groß. Und für den restlichen Bereich (Asien etc) sind die meisten Zeichen 4 Byte lang. Daher ist UTF8 im Sinne von Übertragung und Speicherung meistens ökonomischer. Das ist zwar eigentlich Haarspalterei, aber UTF8 ist keineswegs ungewöhnlich.

Trotzdem sollte eine Bibliothek die man (kostenpflichtig? Kauft) schon alle Eigenheiten des Unterstützen System berücksichtigen und nicht sagen: "Wir machen es in allen Systemen anders, also passt ihr euch an".
Ich frag mich sogar noch mehr, ob die das überhaupt umfassend testen. Den Vorschlag, das dann im GetText zu konvertieren, halte ich für eine komplette Bankrotterklärung. Man sollte nicht vergessen, das Komponenten wie die in Lazarus eingebauten SQL DB Komponenten es auf jeder Plattform (windows, Linux, Mac usw) hinkriegen, ohne manuelles GetText das richtige Zeichen auf den Bildschirm zu bekommen.

Wenn man also als Komponentenhersteller die Komponenten aus reinem Opportunismus auf dieser Plattform "benutzbar" macht, in dem es sich kompilieren lässt und für einige der unterstützten Plattformen bzw Charsets auch benutzen lässt, dann sollten die den potentitellen Käufer doch drauf hinweisen. Wenn manfred_h der erste ist, der das gemerkt hat und man erst Tage später nach intensiven Nachhaken eine unbefriedigende Erklärung dazu geben kann, ist das im Sinne einer Produkthaftung sicherlich Grund genug, das Geld zurückfordern zu können. Ich gehe nämich auch davon aus, das beim Schreiben SetText ebenso behandelt werden müsste und spätestens jetzt macht die Komponente mehr Arbeit als man dadurch einspart, im Vergleich zu den eingebauten SQL DB Komponenten.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 3. Okt 2015, 09:28
Lazarus geht mit ihren UTF8-Weg schon ziemlich einen ungewöhnlichen Weg. Viele Systeme (.NET/Java/Windows/Delphi) gehen den UTF-16 Weg.
Einspruch: https://en.wikipedia.org/wiki/UTF-8
"UTF-8 is the dominant character encoding for the World Wide Web, accounting for 85.1% of all Web pages in September 2015"
UTF16 ist durch Windows weit verbreitet, wer sich aber mal eine typische Textdatei im Hex Editor anschaut, sieht sofort die Nachteile von UTF16, denn wie der Name schon beeinhaltet, ist für jedes Zeichen immer mindestens 2 Byte Platz erforderlich, auch wenn da nur Ascii Zeichen wie A-Z und 0-9 drin stehen. Das betrifft im westeuropäischen Sprachraum sicherlich den Großteil aller Daten. Die Dateien sind daher bei gleichem Inhalt fast doppelt so groß. Und für den restlichen Bereich (Asien etc) sind die meisten Zeichen 4 Byte lang. Daher ist UTF8 im Sinne von Übertragung und Speicherung meistens ökonomischer. Das ist zwar eigentlich Haarspalterei, aber UTF8 ist keineswegs ungewöhnlich.
Mir ging es mit ungewöhnlich um den Faktor Frameworks/OS. Das UTF8 beim Speichern oder im web (Kein Webseite läuft auf UTF16 sondern primär auf UTF8).
AFAIK hat aber auch OSX UTF16 als die primäre/bevorzugte Codierung und auch Android (wegen starker Java-Wurzeln) wird UTF16 haben.
Und dann ist es von vorteil wenn auch die eigene Sprache UTF16 verwendet damit bei jedem API aufruf gewandelt werden muss. Vor einiger Zeit habe ich Lazarus getestet und dort war es nicht möglich (oder nur sehr umständlich) alle File-Funktionen mit Dateien mit Sonderzeichen zu nutzen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 3. Okt 2015, 10:57
Ich frag mich sogar noch mehr, ob die das überhaupt umfassend testen. Den Vorschlag, das dann im GetText zu konvertieren, halte ich für eine komplette Bankrotterklärung. Man sollte nicht vergessen, das Komponenten wie die in Lazarus eingebauten SQL DB Komponenten es auf jeder Plattform (windows, Linux, Mac usw) hinkriegen, ohne manuelles GetText das richtige Zeichen auf den Bildschirm zu bekommen.

Wenn man also als Komponentenhersteller die Komponenten aus reinem Opportunismus auf dieser Plattform "benutzbar" macht, in dem es sich kompilieren lässt und für einige der unterstützten Plattformen bzw Charsets auch benutzen lässt, dann sollten die den potentitellen Käufer doch drauf hinweisen. Wenn manfred_h der erste ist, der das gemerkt hat und man erst Tage später nach intensiven Nachhaken eine unbefriedigende Erklärung dazu geben kann, ist das im Sinne einer Produkthaftung sicherlich Grund genug, das Geld zurückfordern zu können. Ich gehe nämich auch davon aus, das beim Schreiben SetText ebenso behandelt werden müsste und spätestens jetzt macht die Komponente mehr Arbeit als man dadurch einspart, im Vergleich zu den eingebauten SQL DB Komponenten.
Diese Methode andere Codierung einer Komponente beizubringen die es nicht kann habe ich so 2002 gemacht als wir unser D6 Programm Unicode bei gebracht haben.
In 2015 sehe ich das als Krücke an. Empfiehlt der Komponentenhersteller das, wäre das für mich ein Argument nach Alternativen zu suchen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#28

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 4. Okt 2015, 17:24
Danke für Eure Antworten.

Für mich war RemObjects eine gute Idee, weil ich eine Komponente suchte, mit der ich eine Verbindung auf einen zentralen MySQL Server realisieren kann, ohne dass dieser direkt ansprechbar ist.
RemObject hat für dies eine html Schnittstelle, die dies übernimmt. Die Benutzerverwaltung konnte auch schön mit einem LDAP-Server realisiert werden.

Momentan bin ich mir nicht sicher, wie ich weitergehen soll...
Lazarus habe ich ausgesucht, da dies sehr ähnlich wie Delphi ist. Von Delphi wollte ich aus Kostengründen "weg". Nichts generell gegen Delphi.
Habe mich auch schon ( die letzten Tage ) mit dem Gedanken beschäftigt, ob Visual Studio eine Option wäre....
Lazarus hat mich auch begeistert, da ich eine Codebasis für Windows / OS X / Linux hatte.

Shalom
Manfred

PS: Der Support von RemObject war immer sehr gut Erreichbar und hat eigentlich immer gute Lösungsvorschläge unterbreitet. Wollte dies nur kommunizieren, da ich kein schlechtes Licht auf den Support werfen möchte. Das aktuelle Problem ist aber trotzdem sehr ärgerlich...
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#29

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 4. Okt 2015, 22:34
Für mich war RemObjects eine gute Idee, weil ich eine Komponente suchte, mit der ich eine Verbindung auf einen zentralen MySQL Server realisieren kann, ohne dass dieser direkt ansprechbar ist.
Dafür benutzen wir in einem sehr großen Projekt sehr gerne SSH (auf windows mit putty bzw plink) und bauen damit von verbundenen clients aus einen Reverse Tunnel auf. Ohne SSH Key kommt dann eh keine auf die Kiste, der Traffic ist verschlüsselt und komprimiert und über den gleichen Kanal kannst du parallel auch neben deiner DB auch noch ftp,rdp oder sonstwas drauf binden. Aus der Sicht deiner client app kannst du alles machen, was sonst auch per tcp auf der Remotemaschine geht. Ist eine ähnliche Technik mit der auch Teamviewer bzw pcvisit verbindungen aufbaut, wenn man das über ein gateway server macht, dann braucht außer der keiner der anderen beteiligten System eine nach außen erreichbaren offenen Port.

Ergänzend nutzen wir in anderen Projekten einen 30 Zeiler in php, mit dem wir dann (in dem Falle aber mit Firebird) via http bzw https request sql abfragen an einen apache webserver senden und der uns dann die resultate in einem csv format zurücksendet (Der Rest ist in einer Firebird SP realisiert).

Leider ist in deiner Aussage aber schon das größte Problem vieler Delphi Programmierer enthalten: man sucht nach einer Komponente!

Die macht dann oft ganz viele tolle Dinge, aber das eigentliche Problem wäre oft ohne Komponente viel einfacher umzusetzen. Remobjects gehört sicherlich neben devexpress und tms zu den besten Herstellern, die noch im Delphi Markt existieren, aber man sollte immer die Alternative Do it yourself im Auge behalten, ist oft weniger schwierig als man denkt.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#30

AW: Umlaute // Lazarus 1.4.2 mit Datenbank

  Alt 21. Okt 2015, 09:08
Hallo zusammen
Gute neuigkeiten von remobjects. Das ganze wurde als Bug eingestuft wird behoben.
Zitat:
Thanks, logged as bugs://73397
bugs://73397 got closed with status fixed.
it will be in next beta (in a week)
Shalom
Manfred
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz