hilpers


  hilpers > microsoft.* > microsoft.german.entwickler.dotnet.vb

 #1  
27.06.2007, 08: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, 08: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, 08: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, 09: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, 10: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, 10: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, 12: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, 15: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
Suche konvertierung Integer / Long in 2Byte / 4Byte String

Hallo eine Byte Variable kann ich mit chr$(x) in einen String konvertieren und mit ASC daraus wieder einen Integer machen nur wie geht das elegant mit Integer in Word (2...

Konvertierung einer boolschen Bedingung in einen Integer-Ausdruck

Hallo, ich habe in SQL häufiger folgendes Problem: ich muss das Ergebnis einer Bedingung innerhalb eines Ausdrucks verwenden. Also vom Prinzip her: DECLARE @flag AS BIT SET...

Konstanten (long und Konvertierung)

Hallo, sind lseek(fd, 0, SEEK_SET) und lseek(fd, 0L, SEEK_SET)

Konvertierung in Integer

Hallo NG, ich habe gleich noch eine Frage. Sie betrifft die zahlreichen Konvertierungsmöglichkeiten. Welche sollte man wann anwenden? Werden die VB-spezifischen Funktionen...


Alle Zeitangaben in WEZ. Es ist jetzt 03:35 Uhr. | Privacy Policy