![]() |
TEncoding für Delphi 7
Hallo,
ich würde gerne für ein Projekt die Tag-Bibliothek von " ![]() Leider wird mindestens Delphi 2009 vorausgesetzt; hauptsächlich wegen der Unterstützung von UTF mittels der TEncoding-Klasse. Ich habe mir den Code ein wenig angeschaut und festgestellt, dass fast nur die beiden Methoden TEncoding.GetString und TEncoding.GetBytes verwendet werden (und natürlich die Initialisierung der Klasse). Kennt jemand von euch vielleicht eine "Ersatzklasse" für TEncoding, die ich einfach zusätzlich einbinden kann, ohne die kompletten Units von 3delite umschreiben zu müssen? Für den Anfang würden ja die beiden genannten Funktionen reichen. Vielleicht bin ich ja einer der letzten D7-Programmierer... .sundance. |
AW: TEncoding für Delphi 7
GetBytes: Unicode -> CodePage
GetChars: CodePage -> Unicode Was ist es denn für ein Encoding? UTF's gibt's Viele. UTF8Encode UTF8Decode MultiByteToWideChar WideCharToMultiByte ... |
AW: TEncoding für Delphi 7
In der Hauptsache gehts um UTF8, UTF16 und ANSI.
Da lassen sich sicher Funktionen finden, die die Umwandlungen machen. Aber mit D7 wird sich sowas wohl nicht realisieren lassen (zumindest habe ich keine Ahnung, wie man so eine Klasse definieren sollte):
Delphi-Quellcode:
var
UTF8Encoding: TEncoding; UTF8Encoding := TEncoding.UTF8; ... Bytes := TEncoding.ANSI.GetBytes(Source); |
AW: TEncoding für Delphi 7
Dafür könnte man eine Klassenstruktur nur mit class-Methoden, class-Felder und class-Property schaffen:
Delphi-Quellcode:
type
TEncoder = class; TEncoding = class of TEncoder; TEncoder = class() private class function GetUTF8: TEncoding; class function GetANSI: TEncoding; public class property UTF8: TEncoding read GetUTF8; class property ANSI: TEncoding read GetANSI; class function GetBytes(const Source: string): TBytes; virtual; abstract; end; TEncoderUTF8 = class(TEncoder) public class function GetBytes(const Source: string): TBytes; override; end; TEncoderANSI = class(TEncoder) public class function GetBytes(const Source: string): TBytes; override; end; implementation class function TEncoder.GetUTF8: TEncodingClass; begin Result := TEncoderUTF8; end; class function TEncoder.GetANSI: TEncodingClass; begin Result := TEncoderANSI; end; class function TEncoderUTF8.GetBytes(const Source: string): TBytes; begin {ToDo: } end; class function TEncoderANSI.GetBytes(const Source: string): TBytes; begin {ToDo: } end; |
AW: TEncoding für Delphi 7
Zitat:
|
AW: TEncoding für Delphi 7
Zitat:
|
AW: TEncoding für Delphi 7
Klassenfelder (class var) gibt es seit Delphi 2006, aber im Grunde sind das ja einfach nur globale Variablen.
Klassen-Methoden (class procedure) wurden mit Delphi 7 eingeführt und im Grunde sind das halt auch nur einfache Prozeduren. Das "Source" wird wohl ein UnicodeString sein. Entweder du nimmst dafür WideString, falls da überhaupt noch viel vom Unicode übrig bleibt ... k.A. wie und wo die (Unicode)Strings dort behandelt werden. Zwischen Dephi 7 und 2009 wurde vieles eingeführt, zusätzlich noch die Umstellung auf Unicode ........... das lässt sich bestimmt alles durch entsprechende ältere Technologieren ersetzen ... kommt nur drauf an, was alles benötigt wird und auf den Aufwand das alles zu umzuschreiben. |
AW: TEncoding für Delphi 7
Danke an alle für die Beiträge.
Class-Properties sind "Neuland" für mich (D7); aber zumindest verstehe ich jetzt die Konstruktionen im Quelltext von 3delite. Vielleicht läßt sich da ja was Vergleichbares mit Klassenfunktionen realisieren. Sonst ist leider erheblicher Aufwand wegen der Codeanpassungen fällig... .sundance. |
AW: TEncoding für Delphi 7
class functions und class procedures kennt D7. Die class Properties sind im Beispiel eh Read-Only, können also durch functions ersetzt werden.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 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-2025 by Thomas Breitkreuz