AGB  ·  Datenschutz  ·  Impressum  







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

IN durch CharInSet ersetzen

Ein Thema von franz22 · begonnen am 25. Nov 2015 · letzter Beitrag vom 27. Nov 2015
Antwort Antwort
Seite 1 von 2  1 2      
franz22

Registriert seit: 17. Sep 2007
7 Beiträge
 
#1

IN durch CharInSet ersetzen

  Alt 25. Nov 2015, 09:24
Delphi-Version: XE7
Hallo zusammen,

beim Öffnen eines, mit Delphi2007 erstellten Programms, mit Delphi XE7 bekomme ich folgende Meldung angezeigt:
[dcc32 Warnung] Unit1.pas(4190): W1050 WideChar in Set-Ausdrücken auf ByteChar verkürzt. Ziehen Sie die Verwendung der Funktion 'CharInSet' aus der Unit 'SysUtils' in Betracht.

Die beanstandete Quelltextzeile dazu ist:
  if not (Key in ['0'..'9', ',', '-', Char(VK_BACK), Char(VK_DELETE)]) then Key:= #0; Diese Konstruktion stammt übrigens aus dem Easy Delphi Helper.

Nun habe ich das nach CharInSet() umgeformt, aber der Quelltext erstreckt sich jetzt über mehrere Zeilen:
Delphi-Quellcode:
  if not CharInSet(Key,['0'..'9']) then
    if not CharInSet(Key,[',']) then
      if not CharInSet(Key,['-']) then
        if not CharInSet(Key,[Char(VK_BACK)]) then
          if not CharInSet(Key,[Char(VK_DELETE)]) then Key:= #0;
Hat jemand eine Idee, wie es noch kürzer geht (Ja, ich weiß, das alles passt auch in eine Zeile), eventuell mit anderen Methoden?

Vielen Dank das Ihr Euch diesen Thread angeschaut habt.

Grüße
Franz

Geändert von mkinzler (25. Nov 2015 um 09:27 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: IN durch CharInSet ersetzen

  Alt 25. Nov 2015, 09:30
Das Set beginnt bei [ und endet bei ]

if not CharInSet(Key,['0'..'9', ',', '-', Char(VK_BACK), Char(VK_DELETE)]) then
Jens
  Mit Zitat antworten Zitat
franz22

Registriert seit: 17. Sep 2007
7 Beiträge
 
#3

AW: IN durch CharInSet ersetzen

  Alt 25. Nov 2015, 09:36
Hallo Jens,

vielen Dank für die blitzschnelle Antwort. Hat geklappt.

Grüße
Franz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: IN durch CharInSet ersetzen

  Alt 26. Nov 2015, 14:19
Man könnte auch einfach die Compilermeldung deaktivieren.
CharInSet macht intern auch nichts anderes, als ein IN.

Und außerdem ist CharInSet auch schonwieder veraltet, aber dessen bei Ersatz macht Emba wohl einen Scherz.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#5

AW: IN durch CharInSet ersetzen

  Alt 26. Nov 2015, 14:38
Und außerdem ist CharInSet auch schonwieder veraltet, aber dessen bei Ersatz macht Emba wohl einen Scherz.
Wie "schon wieder veraltet"? Verursacht CharInSet in DX eine Warnung?

Ich erinnere mich noch mit Freude an TCharacter. Um unseren D2007-Prä-Unicode-Quelltext auf XE2 zu bringen, haben wir unter anderem c in ['0'..9''] durch TCharacter.IsDigit(c) ersetzt, die neue, korrekte, frisch eingeführte Methode. Soweit OK. Dann steigen wir auf XE6 um und es hagelt "TCharacter is deprecated"-Meldungen. TCharacter wurde (vermutlich) 2009 eingeführt und 2014 (oder eher - bin zu faul zum nachschauen) ist es veraltet?
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: IN durch CharInSet ersetzen

  Alt 27. Nov 2015, 07:37
Die Meldung kommt schon seit einer ganzen Weile.

function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; overload; inline; deprecated 'Use TCharHelper functionality';

Nur für eigene Bereichsdefinitionen ist TCharHelper absolut sowas von garnicht geeignet.

XE6 weiß ich jetzt nicht, das war jetzt wieder aus XE8 kopiert.
Ja, bei soeinem Mist, weiß man doch garnicht was man tun soll.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Nov 2015 um 07:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: IN durch CharInSet ersetzen

  Alt 27. Nov 2015, 08:01
Ja, bei soeinem Mist, weiß man doch garnicht was man tun soll.
Nennt mich maiv, aber wenn mir so etwas auf den Wecker geht, dann definiere ich mir mein eigenes Konstrukt (in meiner Basis-Bibliothek) und leite das per Compilerschalter auf die Variante um, die denn aktuell da gültig sein soll.

Dann bleibt der Anwendungscode immer gleich und trotzdem wird das verwendet, was nun gerade State of the Art ist.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#8

AW: IN durch CharInSet ersetzen

  Alt 27. Nov 2015, 08:13
function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; overload; inline; deprecated 'Use TCharHelper functionality';
Jetzt nochmal mit Drumherum aus dem aktuellen Seattle:
Delphi-Quellcode:
{$IFNDEF NEXTGEN}
function CharInSet(C: AnsiChar; const CharSet: TSysCharSet): Boolean; overload; inline;
function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean; overload; inline;
{$ELSE}
function CharInSet(C: Byte; const CharSet: TSysCharSet): Boolean; overload; inline; deprecated 'Use TCharHelper functionality';
function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; overload; inline; deprecated 'Use TCharHelper functionality';
{$ENDIF}
Bei genauem Hinsehen wird man entdecken, daß CharInSet lediglich für den NextGen-Compiler als deprecated markiert ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: IN durch CharInSet ersetzen

  Alt 27. Nov 2015, 08:21
Ifndef ?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: IN durch CharInSet ersetzen

  Alt 27. Nov 2015, 08:24
http://docwiki.embarcadero.com/RADSt...e_%28Delphi%29 (extra verlinkt auf die Delphi XE Dokumentation)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:31 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