AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi WideChar in Set-Ausdrücken auf ByteChar verkürzt ?
Thema durchsuchen
Ansicht
Themen-Optionen

WideChar in Set-Ausdrücken auf ByteChar verkürzt ?

Ein Thema von nachtstreuner · begonnen am 22. Feb 2012 · letzter Beitrag vom 22. Feb 2012
Antwort Antwort
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#1

WideChar in Set-Ausdrücken auf ByteChar verkürzt ?

  Alt 22. Feb 2012, 09:42
Hallo Delphi-Gemeinde,

ich habe folgenden Code , um nur bestimmte Zeichen in einem EditFeld(DB) zuzulassen:
Delphi-Quellcode:
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;
Das ganze funktioniert auch so wie ich es haben will.
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.
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?

  Alt 22. Feb 2012, 09:49
Es steht doch in der Meldung: Delphi-Referenz durchsuchenCharInSet verwenden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#3

AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?

  Alt 22. Feb 2012, 10:07
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:
procedure TfrmKUNDENVERWALTUNG.cxDBEditPLZKeyPress(Sender: TObject;
  var Key: CharInSet);
begin
  if not (Key in ['0'..'9', ' ', charInSet(VK_BACK) ]) then
    key := #0;
end;
[DCC Fehler] Kunden.pas(304): E2250 Es gibt keine überladene Version von 'CharInSet', die man mit diesen Argumenten aufrufen kann
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?

  Alt 22. Feb 2012, 10:08
Wo? (Ein Blick in die OH sollte das eigentlich erklären)
Na, du mußt dein Key in ['0'..'9', ' ', charInSet(VK_BACK)] gegen den Aufruf des Delphi-Referenz durchsuchenCharInSet austauschen.

Und Eventuell auch 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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (22. Feb 2012 um 10:10 Uhr)
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#5

AW: WideChar in Set-Ausdrücken auf ByteChar verkürzt ?

  Alt 22. Feb 2012, 10:40
Hallo himitsu,

gemäß Deinem Hinweis und meiner Änderung im Code :

Delphi-Quellcode:
//==============================================================================
//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;
funktioniert es jetzt einwandfrei. Keine Warnmeldungen beim Compilieren, zur Laufzeit funktioniert auch alles.

Besten Dank an Dich und DeddyH
Alles wird gut -
  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 14:35 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