![]() |
WideChar in Set-Ausdrücken auf ByteChar verkürzt ?
Hallo Delphi-Gemeinde,
ich habe folgenden Code , um nur bestimmte Zeichen in einem EditFeld(DB) zuzulassen:
Delphi-Quellcode:
Das ganze funktioniert auch so wie ich es haben will.
Zeile 298 : { Im Feld PLZ dürfen nur Zahlen oder auch ein Leerzeichen eingegeben werden}
Zeile 299 : procedure TfrmKUNDENVERWALTUNG.cxDBEditPLZKeyPress(Sender: TObject; Zeile 300 : var Key: Char); Zeile 301 : begin Zeile 302 : if not (Key in ['0'..'9', ' ', char(VK_BACK) ]) then Zeile 303 : key := #0; Zeile 304 : end; Allerdings bekomme ich beim compilieren folgende Warnmeldungen, was muss ich tun um diese Warnmeldungen wegzubekommen ? [DCC Warnung] Kunden.pas(302): W1050 WideChar in Set-Ausdrücken auf ByteChar verkürzt. Ziehen Sie die Verwendung der Funktion 'CharInSet' aus der Unit 'SysUtils' in Betracht. |
AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?
Es steht doch in der Meldung:
![]() |
AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?
Hallo DeddyH,
das habe ich auch gelesen. Vielleicht hab ich meine Frage falsch gestellt. Wie muss ich wo im Code etwas ändern ? So geht´s nicht !
Delphi-Quellcode:
[DCC Fehler] Kunden.pas(304): E2250 Es gibt keine überladene Version von 'CharInSet', die man mit diesen Argumenten aufrufen kann
procedure TfrmKUNDENVERWALTUNG.cxDBEditPLZKeyPress(Sender: TObject;
var Key: CharInSet); begin if not (Key in ['0'..'9', ' ', charInSet(VK_BACK) ]) then key := #0; end; |
AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?
Wo? (Ein Blick in die OH sollte das eigentlich erklären)
Na, du mußt dein
Delphi-Quellcode:
gegen den Aufruf des
Key in ['0'..'9', ' ', charInSet(VK_BACK)]
![]() Und Eventuell auch
Delphi-Quellcode:
.
AnsiChar(VK_BACK)
Ein Set kann nur maximal 256 Werte aufnehmen, was dann auch erklärt, warum Unicode (65536 Werte) dort nicht reinpaßt. Wobei Embarcadero das auch beheben könnte, wenn man nicht den langsamen Assemblerbefehl (hat nur eine Byte-Adressierung) verwenden würde. (oder zumindestens nicht, bei größeren Sets) |
AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?
Hallo himitsu,
gemäß Deinem Hinweis und meiner Änderung im Code :
Delphi-Quellcode:
funktioniert es jetzt einwandfrei. Keine Warnmeldungen beim Compilieren, zur Laufzeit funktioniert auch alles.
//==============================================================================
//Im Feld PLZ dürfen nur Zahlen od. auch ein Leerzeichen eingegeben werden (11) //============================================================================== procedure TfrmKUNDENVERWALTUNG.cxDBEditPLZKeyPress(Sender: TObject; var Key: Char); begin if not CharInSet(Key,[ '0'..'9', ' ', AnsiChar(VK_BACK) ]) then key := #0; end; Besten Dank an Dich und DeddyH :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 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