hilpers


  hilpers > microsoft.* > microsoft.german.entwickler.dotnet.vb > 06/2007

 #1  
27.06.2007, 09:11
Waldemar Reidel
Guten Morgen

irgendwie kriege ich nicht hin ein ganz normale Konvertierung von
Integer zu String in einem konstanten Ausdruck

Mein Fall:

Private Const intZahl As Integer = 700
....
Private Const strSatzart As String = _
"[PatientNummer] = %1" _
& " AND [Datum] = ?MessDatum. AND [intZahl] = " _
& intZahl & " And [Kurzinfo] Like '"
....

Der Compiler meldet mir folgenden Fehler:
Eine Konvertierung von "Integer" zu "String" kann in einem konstanten
Ausdruck nicht durchgeführt werden.
Ich habe schon mit .ToString, CType, Convert.ToString versucht,
irgendwie klappt es bei mir die Konvertierung nicht.

Was mache ich den Falsch?

Gruß
Waldemar Reidel
 #2  
27.06.2007, 09:26
Armin Zingler
"Waldemar Reidel" <waldemar.reidel> schrieb
Guten Morgen

irgendwie kriege ich nicht hin ein ganz normale Konvertierung von
Integer zu String in einem konstanten Ausdruck

Mein Fall:

Private Const intZahl As Integer = 700
....
Private Const strSatzart As String = _
"[PatientNummer] = %1" _
& " AND [Datum] = ?MessDatum. AND [intZahl] = " _
& intZahl & " And [Kurzinfo] Like '"
....

Der Compiler meldet mir folgenden Fehler:
Eine Konvertierung von "Integer" zu "String" kann in einem konstanten
Ausdruck nicht durchgeführt werden.
Ich habe schon mit .ToString, CType, Convert.ToString versucht,
irgendwie klappt es bei mir die Konvertierung nicht.

Was mache ich den Falsch?

======

Bei der Deklaration von Konstanten ist "&" kein Operator, der zur Laufzeit
ausgeführt wird, sondern er dient der Verknüfpung von einzelnen, konstanten
Strings. Da die Umwandlung von Integer in String ein Vorgang ist, der erst
zur Laufzeit ausgeführt werden kann, ist die Verknüpfung von
String-Konstanten und Integer-Konstanten bei der Konstantendeklaration nicht
möglich.

Und noch als Tipp aus der Sprachspezifikation:
"When a symbolic name for a constant value is desired, but the type of the
value is not permitted in a constant declaration or when the value cannot be
computed at compile time by a constant expression, a read-only variable may
be used instead."


Armin
 #3  
27.06.2007, 09:34
Armin Zingler
Nachtrag:
http://msdn2.microsoft.com/en-US/lib...20(VS.71).aspx

s. Begründung bei "Coercions to and from String are an exception to this
rule..."


Armin
 #4  
27.06.2007, 10:02
Waldemar Reidel
Danke Armin

das habe ich nicht gewusst :-) in VB6 ging es, das weiß ich noch. Bin
beim überlegen wie es ändern kann.

Gruß
Waldemar
 #5  
27.06.2007, 11:06
Thorsten Doerfler
Waldemar Reidel schrieb:
> das habe ich nicht gewusst :-) in VB6 ging es, das weiß ich noch.


VB6 ließ Dich auch mit Zeichenfolgen rechnen.

> Bin beim überlegen wie es ändern kann.


Private Const intZahl As String = "700"
....
Private Const strSatzart As String = _
"[PatientNummer] = %1" _
& " AND [Datum] = ?MessDatum. AND [intZahl] = " _
& intZahl & " And [Kurzinfo] Like '"

Die Bezeichner habe ich extra so belassen, um zu zeigen, wie wertfrei
und unflexibel Typpräfixe sind.

Alternative:

Private Const intZahl As Integer = 700
....
Private Shared ReadOnly strSatzart() As String
Get
Return "[PatientNummer] = %1" _
& " AND [Datum] = ?MessDatum. AND [intZahl] = " _
& intZahl.ToString & " And [Kurzinfo] Like '"
End Get
End Property

Wobei letzteres alles andere, als ein konstanter Ausdruck ist.

Thorsten Dörfler
 #6  
27.06.2007, 11:55
Armin Zingler
"Waldemar Reidel" <waldemar.reidel> schrieb

> das habe ich nicht gewusst :-) in VB6 ging es, das weiß ich noch. Bin
> beim überlegen wie es ändern kann.


s. meine erste Antwort ("...a read-only variable may be used instead."")


Armin
 #7  
27.06.2007, 13:03
Thorsten Doerfler
Thorsten Doerfler schrieb:
> Alternative:
>
> Private Const intZahl As Integer = 700
> ...
>


Man sollte sich natürlich schon auf etwas festlegen. Entweder
richtiger (bezogen auf das fehlende 'Property'):

Private ReadOnly Property strSatzart() As String
> Get
> Return "[PatientNummer] = %1" _
> & " AND [Datum] = ?MessDatum. AND [intZahl] = " _
> & intZahl.ToString & " And [Kurzinfo] Like '"
> End Get
> End Property


Oder:

Private ReadOnly strSatzart As String = "[PatientNummer] = %1" _
& " AND [Datum] = ?MessDatum. AND [intZahl] = " _
& intZahl.ToString & " And [Kurzinfo] Like '"

Jetzt dürftest Du genug Alternativen haben. :-)

Thorsten Dörfler
 #8  
27.06.2007, 16:45
Herfried K. Wagner [MVP]
"Waldemar Reidel" <waldemar.reidel> schrieb:
>irgendwie kriege ich nicht hin ein ganz normale Konvertierung von
>Integer zu String in einem konstanten Ausdruck


Was spricht gegen 'Private ReadOnly ... As String = ...'?
Ähnliche Themen
Worte wie "Schlampe", "Nutte", "Fotze", "Sack", "Eier" aus dem Kindergarten mitgebracht!

x-no-archive: yes HILFE! Mein Sohn ist 5 Jahre alt und gestern kam er aus dem Kindergarten und nannte seine 3jährige Schwester eine "dumme Fotze" und eine "Nutte" und...

"lambda-Ausdruck" kann nicht in den Typ "string" konvertiert werden...

Hallo NG, Nach dem Verschieben einer Klasse in eine Klassenbibliothek will sich diese nicht mehr kompilieren lassen, weil der Compiler mit meinem LINQ Ausdruck "nicht mehr"...

"Copy"-"Save"-"UnZoom" auf einem ContextMenü

Hallo Zussammen, ich bin gerade dabei ein Labrary zu implementieren. Das Programm erzeugt bei der Ausführung (F5) 3 Kurven, die in einem anderen Fenster gezeichnen werden. In...

in einem String "\" duch "\\" ersetzen - replaceAll() wirft Exception

Hallo, ich versuche mich gerade an einer Stringbearbeitung, komme aber nicht so recht weiter. was ich machen will: ich versuche in einem String Zeichen zu ersetzen bzw....

Konvertierung TrueType für LaTeX: ttf-Datei nur für "medium" - "normal" vorhanden

Hallo, ich habe soeben (erfolgreich) anhand der Anleitung von Damir Rakityansky (ftp://ftp.dante.de/tex-archive/info/german/MiKTeX-WinEdt-TrueType-Anleitung/ttf.htm) einen...


Alle Zeitangaben in WEZ. Es ist jetzt 00:01 Uhr. | Privacy Policy