Autor Beitrag
Seppe
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 08.09.08 13:42 
Hallo,

ich versuch gerade meine Delphi-Komponenten in c# umzusetzen und komme in einer Sache nicht weiter.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
const
Numeric_Codes   = [('0')..('9'),('-')];

...
if (charcode in Numeric_Codes) then
....


Gibt es in c# ein ähnliches Konstrukt für solche IF-Abfragen ?

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 08.09.08 13:54 
Hallo!

Nein, sowas gibt's leider nicht. Da muss man dann schon Oxygene benutzen, das hat sowas :-)

Du kannst es aber (wahrscheinlich bei weitem nicht so performant) mit einem regulären Ausdruck lösen:
ausblenden C#-Quelltext
1:
if (Regex.Match(@"[0-9\-]", charcode))					


Oder evtl. so:
ausblenden C#-Quelltext
1:
 if((charcode >= '0' && charcode <= '9') || charcode == '-'))					


Grüße
Christian


//edit: Ich wusste doch, dass ich die Frage auch mal gestellt habe. Hier gibt's noch mehr Antworten: www.c-sharp-forum.de...=0&postorder=asc

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Skiller-1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Mo 08.09.08 14:01 
Ich weis zwar nicht ob es dir weiterhilft aber ich habe das mal ganz einfach ausprobiert mit einer foreach-schleife.
Ich kann mir schon denken das hinsichtlich der Performance nicht die beste Lösung sein wird , aber es funktioniert soweit.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            char[] Numeric= new char[] {'0','1','2','3','4','5','6','7','8','9',};
            bool res =false;
            string eingabe= Console.ReadLine();
            foreach(char c in Numeric)
            {
                if (eingabe.Contains(c))
                    res = true;
            }
            Console.WriteLine(res.ToString());

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~
Seppe Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 08.09.08 19:32 
Danke für die Bemühungen.

Ich habs mit

if (fNumericChars.IndexOf(KeyChar) >= 0)

gelöst.

Noch ne Frage: In welchem Namespace sind die Virtual Keycodes definiert?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 08.09.08 19:58 
ausblenden C#-Quelltext
1:
enum System.Windows.Forms.Keys					

Macht aber normalerweise nur zusammen mit KeyUp/Down Sinn.
Außerdem solltest du der Übersichtlichkeit zuliebe einen neuen Thread (in der passenden Sparte) aufmachen, wenn du weitere Fragen hast, die nicht mehr zum Originalthema gehören.

_________________
>λ=