AGB  ·  Datenschutz  ·  Impressum  







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

TEdit-Komponente mit AnsiString

Ein Thema von colcok · begonnen am 11. Okt 2021 · letzter Beitrag vom 11. Okt 2021
Antwort Antwort
colcok

Registriert seit: 15. Mär 2021
11 Beiträge
 
#1

TEdit-Komponente mit AnsiString

  Alt 11. Okt 2021, 06:11
Ich habe mich gefragt, ob es relativ schnell zu bewerkstelligen sein müsste, die TEdit-Komponente, welche UnicodeString-Textelemente verwendet,
auf AnsiString umzubauen.
Würde man eine neue Komponente anlegen, die auf TEdit basiert, wie könnte man die Properties, etc. auf AnsiString ändern?
Ich kann den Aufwand nicht wirklich abschätzen, und wäre dankbar, wenn jemand eine Idee hätte.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TEdit-Komponente mit AnsiString

  Alt 11. Okt 2021, 07:13
Wieso soll man das wollen?
Kannst du erklären wieso du AnsiString benötigst?

Ich vermute ein überschreiben von DoChange oder Keypress-Methoden, um alle neuen Zeichen auf "IsAnsChar" sollte helfen.
Die Basis-TEdit-Komponente wirst du nicht ändern können. Dazu ist UnicodeString schon zu tief in der VCL eingebaut.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
colcok

Registriert seit: 15. Mär 2021
11 Beiträge
 
#3

AW: TEdit-Komponente mit AnsiString

  Alt 11. Okt 2021, 07:34
Vielen Dank für deine Antwort.
Die TEdit-Komponente bietet die Möglichkeit, durch Änderung des Charsets
automatisch den angezeigten Text in den entsprechenden Zeichensatz umzuwandeln.
Das funktioniert allerdings mit Unicode nicht mehr, ich hätte erwartet, dass
die Abwärtskompatibilät gegeben ist.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TEdit-Komponente mit AnsiString

  Alt 11. Okt 2021, 07:45
Vielen Dank für deine Antwort.
Die TEdit-Komponente bietet die Möglichkeit, durch Änderung des Charsets
automatisch den angezeigten Text in den entsprechenden Zeichensatz umzuwandeln.
Das funktioniert allerdings mit Unicode nicht mehr, ich hätte erwartet, dass
die Abwärtskompatibilät gegeben ist.
Dieses Property war m.W. eher ein Mapping auf das Alte Charset/Codepage-Verhalten der Nicht-Unicde-API von Windows (Kann mich aber täuschen).
Da dieses Property immer noch vorhanden ist, wird dem geschuldet sein, das sonst viele dfm-Dateien beim Laden krachen würden.
Da das Nutzen seit D2009 doch sehr gering ist, wird keiner bei Emba auf irgendwelche Alte/Ansi-Kompatiblität mehr geachtet haben.

Also selber Entwickeln als auf seit über 20 Jahren nur noch wegen "damits nicht kracht"-Properties verlassen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
colcok

Registriert seit: 15. Mär 2021
11 Beiträge
 
#5

AW: TEdit-Komponente mit AnsiString

  Alt 11. Okt 2021, 08:07
Verstehe, vielen Dank für die Informationen, dann werde ich mein Glück mit einer
geänderten TEdit-Komponente versuchen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: TEdit-Komponente mit AnsiString

  Alt 11. Okt 2021, 11:41
CreateWindowA('EDIT', ....)
und schon hat man ein "TEdit" als ANSI auf der Form.

Aber dennoch, warum unbedingt umständlich die Komponente als ANSI?

Im OnChange kann man die Eingabe unmittelbar prüfen, um dem Nutzer zu sagen "nee, so nicht"
und beim Auslesen lösst sich das Unicode problemlos in ANSI umwandeln.
Beim Umwandeln dann ungültige Zeichen als '?' oder man wirft eine Fehlermeldung
und fertig.

Stichworte: WinAPI, NonVCL

Delphi-Quellcode:
var
  H: HWND;
  S: AnsiString;
begin
  H := CreateWindowA('EDIT', 'Text 123', 0, 100, 50, 121, 21, Self.Handle, 0, HInstance, 0);

  SetLength(S, GetWindowTextLengthA(H));
  GetWindowTextA(H, PAnsiChar(S), Length(S) + 1);
  ShowMessage(S);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Okt 2021 um 11:54 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 16:14 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