Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi TEncoding für Delphi 7 (https://www.delphipraxis.net/183018-tencoding-fuer-delphi-7-a.html)

sundance 4. Dez 2014 13:13

TEncoding für Delphi 7
 
Hallo,
ich würde gerne für ein Projekt die Tag-Bibliothek von "3delite" verwenden.
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.

himitsu 4. Dez 2014 14:10

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
...

sundance 4. Dez 2014 14:39

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);

Blup 4. Dez 2014 16:33

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;

Bernhard Geyer 4. Dez 2014 16:47

AW: TEncoding für Delphi 7
 
Zitat:

Zitat von Blup (Beitrag 1282255)
Dafür könnte man eine Klassenstruktur nur mit class-Methoden, class-Felder und class-Property schaffen:

Und wie willst du dem D7-Compiler class-Felder und class-Property beibringen?

Uwe Raabe 4. Dez 2014 17:33

AW: TEncoding für Delphi 7
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1282256)
Und wie willst du dem D7-Compiler class-Felder und class-Property beibringen?

Na, wie immer - durch ein Update...

himitsu 4. Dez 2014 18:26

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.

sundance 5. Dez 2014 07:02

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.

Dejan Vu 5. Dez 2014 07:24

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:

Zitat von himitsu (Beitrag 1282268)
Klassen-Methoden (class procedure) wurden mit Delphi 7 eingeführt und im Grunde sind das halt auch nur einfache Prozeduren.

D6 oder sogar noch früher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 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