AGB  ·  Datenschutz  ·  Impressum  







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

ConvertToUtf32

Ein Thema von freimatz · begonnen am 5. Jan 2021 · letzter Beitrag vom 5. Jan 2021
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#1

ConvertToUtf32

  Alt 5. Jan 2021, 07:43
Hallo,
ich bin am Aufräumen von altem Code und wollte mal Warnungen vermeiden.

Da hatte ich z.B. das:
[dcc32 Warning] ... W1000 Symbol 'IsSurrogate' is deprecated: 'Use TCharHelper'
Ok, ich schreibe statt "IsSurrogate(C)" dann eben C.IsSurrogate

Dann das:
[dcc32 Warning] ... W1000 Symbol 'ConvertToUtf32' is deprecated: 'Use TCharHelper'
Da habe ich "UC := ConvertToUtf32(C, C2);"
Wie schreibt man das dann richtig?
Das einzgste was funktioniert ist das:
UC := C.ConvertToUtf32(C, C2);
Es geht nicht:
UC := TCharHelper.ConvertToUtf32(C, C2);

Er benutzt dann das:
class function ConvertToUtf32(const HighSurrogate, LowSurrogate: Char): UCS4Char; overload; static;

Muss ich um die Methode zu verwenden eine Instanz (C) angeben obwohl die (Self) dann gar nicht verwendet wird? Das ist doch "Bockmist". Oder ist das wirklich so gedacht?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ConvertToUtf32

  Alt 5. Jan 2021, 08:34
Die ConvertToUtf32-Funktionen sind class functions.
Die kannst du wie folgt anwenden:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.Character;

var
  MyChar1, MyChar2: Char;
  MyUCS4Char: UCS4Char;

begin
// IsSurrogate(MyChar);
    MyChar1.IsSurrogate;
// MyUCS4Char := ConvertToUtf32(MyChar1, MyChar2);
    MyUCS4Char := Char.ConvertToUtf32(MyChar1, MyChar2);
end.
Siehe auch:
Delphi-Quellcode:
type
  TCharHelper = record helper for Char
  private
    class procedure RaiseCheckStringRangeException(Index, LowIndex, MaxIndex: Integer); static;
  public
    const
      MaxHighSurrogate = #$DBFF;
      MaxLowSurrogate = #$DFFF;
      MaxSurrogate = #$DFFF;
      MinHighSurrogate = #$D800;
      MinLowSurrogate = #$DC00;
      MinSurrogate = #$D800;
    class function MaxCodePoint: Integer; static;
    class function UnicodeDataVersion: string; static;

    class function ConvertFromUtf32(C: UCS4Char): string; static;
    class function ConvertToUtf32(const S: string; Index: Integer): UCS4Char; overload; inline; static;
    class function ConvertToUtf32(const S: string; Index: Integer; out CharLength: Integer): UCS4Char; overload; static;
    class function ConvertToUtf32(const HighSurrogate, LowSurrogate: Char): UCS4Char; overload; static;
...
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: ConvertToUtf32

  Alt 5. Jan 2021, 09:18
Wenn ich schreibe "UC := Char.ConvertToUtf32(C, C2);" dann kommt
"[dcc32 Error] ... E2018 Record, object or class type required"

Nachtrag: Ah habs - "Char" war bei mir etwas anderes. Mit WideChar geht es.

Geändert von freimatz ( 5. Jan 2021 um 09:32 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:46 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