AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Migrations-Probleme -> UniCode

Ein Thema von Mavarik · begonnen am 15. Sep 2011 · letzter Beitrag vom 21. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#1

Migrations-Probleme -> UniCode

  Alt 15. Sep 2011, 16:14
Hallo Zusammen...

Als XE erschienen ist... Natürlich nach den Delphi Tagen sofort gekauft...
Mit ENTSETZEN festgestellt, dass es {$H-} nicht mehr gibt und ein Char nicht mehr ein Char ist. (Bitte keine Kommentare dazu

Also XE wieder weggelegt und entschieden - 2,5 Mio Zeilen Source... No way...

-- Story zu Ende --- { Dachte ich }

Als XE2 erschienen ist...Natürlich nach den Delphi Tagen sofort gekauft...
Mit ENTSETZEN festgestellt... Ach ne hatten wir ja schon mal...

OK Also doch mal durchbeißen...

Kann ja nicht so schwierig sein... Global Renamer programmiert... Char -> AnsiChar...

Tja leider funktioniert das so nicht, denn alle abgeleiteten Funktionen aus der VCL wollen kein AnsiChar, sondern ein Char!

Und jetzt? Erstmal Wochenende... Vielleicht habe ich nächste Woche neuen Mut.

Wie habt Ihr das gemacht? Nur neue Programme mit XE(2) schreiben?

Beispiel: Keypress(Key:Char);

Was kommt den in dem Char an bei Unicode? Und wie mache ich korrekte Typenumwandlung für die interne Verarbeitung die auf AnsiChar aufbaut?

Hat jemand vielleicht einen "Leitfaden"?

Grüsse Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

AW: Migrations-Probleme -> UniCode

  Alt 15. Sep 2011, 18:50
Tja leider funktioniert das so nicht, denn alle abgeleiteten Funktionen aus der VCL wollen kein AnsiChar, sondern ein Char!
Tja, die VCL ist komplett Unicode, die WinAPI dahinter arbeitet jetzt mit Unicode.

Vorher wurden die Windows auch als ANSI erstellt (weswegen die TNTs es nicht so einfach hatten hier "einfach" Unicode reinzubringen, da man zwar die UnicodeAPIs nutzten könnte, aber dennoch die Fesnter mit ANSI arbeiten).

Für einige ANSI-Funktionen gibt z.B. die Unit AnsiStrings.


Bei einer Umwandlung:
- wenn es nur auf ASCII ankommt, dann einfach die Chars direkt casten
- ansonsten üben den Char konvertieren
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Sep 2011 um 19:18 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Migrations-Probleme -> UniCode

  Alt 15. Sep 2011, 21:50
Vorher wurden die Windows auch als ANSI erstellt (weswegen die TNTs es nicht so einfach hatten hier "einfach" Unicode reinzubringen, da man zwar die UnicodeAPIs nutzten könnte, aber dennoch die Fesnter mit ANSI arbeiten).
Arbeitete Windows nicht schon seit einer gefühlten Ewigkeit intern mit Unicode, und hatte je eine Ansi- und eine WideString Version der API Funktionen? Ich hatte es eher so in Erinnerung dass gerade deswegen die TNT Komponenten relativ leicht erstellt werden konnten da "nur" die WinAPI-Aufrufe auf die jeweilige WideString Varianten umdirigiert werden mussten.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

AW: Migrations-Probleme -> UniCode

  Alt 15. Sep 2011, 22:30
Dennoch arbeiten die Messages mit ANSI, wenn das Window ala ANSI erstellt wurde.

Du bekommst also keinen Unicodetext in ein Edit, wenn dieses nicht als Unicode erstellt wurde.


Zitat:
If you register the window class by using RegisterClassExA, the application tells the system that the windows of the created class expect messages with text or character parameters to use the ANSI character set; if you register it by using RegisterClassExW, the application requests that the system pass text parameters of messages as Unicode.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Migrations-Probleme -> UniCode

  Alt 16. Sep 2011, 01:36
Dennoch arbeiten die Messages mit ANSI, wenn das Window ala ANSI erstellt wurde.

Du bekommst also keinen Unicodetext in ein Edit, wenn dieses nicht als Unicode erstellt wurde.
Bei den TNT Komponenten wird es einfach dadurch erreicht, das für TWinControls nachträglich ein Unicode-Handle erszeugt wird:
Code:
To add Unicode support to a TWinControl descendant, override CreateWindowHandle() and call CreateUnicodeHandle()
Der Clou ist laut TNT Doku, dass bei den SendMessageA Aufrufen der VCL an ein Unicode Fenster Windows automatisch die Ansi/Unicode Konvertierung übernimmt.

In TntControls.pas wird das Verfahren beschrieben, liest sich fast wie ein kleiner Roman
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Migrations-Probleme -> UniCode

  Alt 21. Sep 2011, 10:33
Bei einer Umwandlung:
- wenn es nur auf ASCII ankommt, dann einfach die Chars direkt casten
- ansonsten üben den Char konvertieren
Fast immer wenn ich hier im Forum einen Beitrag poste - z.B. wenn ich wiedermal an ein Problem gestoßen bin - wundere ich mich darüber wer bzw. wie wenige darauf antworten...

Also etweder programmiert Ihr anders oder ich weis es nicht.

@himitsu Danke, von Dir gibt es eigentlich immer - zu allen Themen ein gute Antwort.

Neues Beispiel...

Nehmt Euch mal nen DOS-Editor... Tippt eine keines "ü" chr(129) in die Datei.
Wenn Ihr diese Datei ins aktuelle Delphi ladet ist das "ü" einfach weg.

Nutzt den keiner von Euch mehr Sourcecode aus der Pre-Windows Area? Ihr müsst doch auf die gleichen Probleme stoßen

Grüsse Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Migrations-Probleme -> UniCode

  Alt 21. Sep 2011, 10:58
Zitat:
Sourcecode aus der Pre-Windows Area
Natürlich. Aber den compiliere ich nicht mit Delphi. Und dort immer noch mit D7, weil nach jeder neueren Version passierte mir das gleiche wie Dir
Zitat:
Mit ENTSETZEN festgestellt... Ach ne hatten wir ja schon mal...
.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#8

AW: Migrations-Probleme -> UniCode

  Alt 21. Sep 2011, 11:17
Fast immer wenn ich hier im Forum einen Beitrag poste - z.B. wenn ich wiedermal an ein Problem gestoßen bin - wundere ich mich darüber wer bzw. wie wenige darauf antworten...

Also etweder programmiert Ihr anders oder ich weis es nicht.
Sieht fast so aus.

Nutzt den keiner von Euch mehr Sourcecode aus der Pre-Windows Area? Ihr müsst doch auf die gleichen Probleme stoßen
Ich habe meine DOS-Programme schon vor gefühlten 100 Jahren auf Windows portiert - oder sie sind immer noch DOS-Programme und werden mit Borland Pascal bearbeitet.

Grundsätzlich versuche ich, alle Programme immer mit der aktuellen Delphi-Version zu bearbeiten. Nur in seltenen Fällen bin ich gezwungen, eine bestimmte Delphi-Version zu verwenden (aber auch da nerve ich ständig). Natürlich gibt es immer ein gewisses Zeitfenster für die Umstellung z.B. jetzt bei XE2 wegen der Fremdkomponenten. Alles in allem habe ich aber sehr gute Erfahrungen mit dieser Vorgehensweise gemacht. Der Änderungsaufwand ist in den meisten Fällen nur minimal.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#9

AW: Migrations-Probleme -> UniCode

  Alt 21. Sep 2011, 12:16
Also etweder programmiert Ihr anders oder ich weis es nicht.
Ich glaube meinen Code hat gerettet, dass es beim C++ Builder schon vorher Konvention war immer AnsiString zu schreiben und nie String, schon wegen der Verwechslungsgefahr mit dem C++ Typ string.

Dadurch hatte man nach der Umstellung zwar diverse überflüssige Konvertierungen zwischen Ansi und Unicode. Aber das meiste lief sofort.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Migrations-Probleme -> UniCode

  Alt 21. Sep 2011, 13:17
Ich habe meine DOS-Programme schon vor gefühlten 100 Jahren auf Windows portiert - oder sie sind immer noch DOS-Programme und werden mit Borland Pascal bearbeitet.
Ja das habe ich auch....DOS Programme gibt es nicht mehr... Wurde alles auf Windows und Delphi umgestellt...

Aber hunderttausende Zeilen Source sind immer noch in Benutzung und zwar bis jetzt unverändert. (War auch bisher nicht nötig)

Mavarik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:37 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