vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Probleme mit Option Strict On 
Autor: Manfred X
Datum: 11.10.14 06:16

OPTION STRICT ON (Dokumentation):
- schränkt die impliziten Datentypkonvertierungen auf ausschließlich
Erweiterungskonvertierungen ein,
- lässt eine späte Bindung nicht zu
- lässt keine implizite Typisierung zu, die einen Object-Typ ergibt.

http://msdn.microsoft.com/de-de/library/zcd4xwzs.aspx

Variable besitzen einen Datentyp. durch den festgelegt ist, welche Information in der
Variable gespeichert werden kann.
OPTION STRICT ON achtet darauf, daß bei der Zuweisung eines Wertes oder
einer Referenz auf eine Variable der Datentyp paßt.


Eine Erweiterungskonvertierung liegt vor, wenn die Ziel-Variable einer
Zuweisung zwar nicht identisch mit dem Typ der zugewiesenen Information ist,
diesen Typ aber trotzdem speichern kann - eventuell unter Inkaufnahme eines
Informationsverlustes:
http://msdn.microsoft.com/de-de/library/aa711609%28v=vs.71%29.aspx
http://msdn.microsoft.com/de-de/library/k1e94s7e.aspx

Eine Ganzzahlvariable des Datentyps Long (64 Byte) kann alle Werte des
Datentyps Integer (32 Byte) verlustfrei aufnehmen.

Eine Gleitkommavariable des Datentyps Double (64 Byte) kann zwar aufgrund
der zulässigen Wertespannweite (Double.MinValue, Double.MaxValue) die
Informationen des Typs Long (64 Byte) aufnehmen - aber nur mit Genauigkeitsverlust
insbesondere bei hohen Ausprägungen des Wertes:

Dim lng As Long = 12345678987554321
Dim dbl As Double = lng '12345678987554320.0


Eine späte Bindung liegt vor, wenn der Datentyp einer Information
erst zur Laufzeit eines Programms festgelegt werden kann.
Beim Programmieren kann noch nicht festgestellt werden, ob der Datentyp
der Ziel-Variable sich zum Speichern einer bestimmten Information eignet.

http://msdn.microsoft.com/de-de/library/0tcf61s1.aspx

Bei "später Bindung" sind Variablen des Typs "Object" im Spiel.
Solche Variablen können jede mögliche Information speichern.
Zuweisungen zu Object-Variablen können von der Entwicklungsumgebung beim
Programm-Entwurf nicht überwacht werden.
Während der Laufzeit eines Programms kann eine Object-Variable
nacheinander unterschiedliche Arten von Information aufnehmen.


Die implizite Typisierung liegt vor, wenn der Typ einer Variable im Code nicht
durch Dim <Variable> AS <Typ> festgelegt wird, sondern aus dem Typ der
zugewiesenen Information ermittelt wird.
Von Interesse ist hier vor allem der "lokale Typ-Rückschluß", der sich durch
OPTION INFER OFF abschalten läßt.
http://msdn.microsoft.com/de-de/library/bb384665.aspx
http://www.vbarchiv.net/tipps/details.php?id=1806

Bei "Option Strict On" wird verhindert, daß es im Rahmen der impliziten Typisierung
einer Variablen zur Festlegung des Datentyps "Object" kommen kann.


Die Text-Eigenschaft einer Textbox speichert eine Zeichenfolge (String).
Will man eine Zahl strict zuweisen, muß diese Zahl zunächst in eine Zeichenfolge
umgewandelt werden:
Dim Integ As Integer = 234
Textbox1.Text = Integ.ToString
Textbox1.Text = CStr(Integ)
Möchte man den Inhalt der Text-Eigenschaft auf eine Ganzzahlvariable zuweisen,
muß zunächst kontrolliert werden, ob die enthaltene Zeichenfolge diese Umwandlung erlaubt.
Auch die Zeichenfolgen "ZWEI" oder "II" lassen sich nicht direkt in eine Zahl umwandeln -
dafür wäre die Anwendung einer speziellen Methode erforderlich.
Dim Integ as Integer
If not Integer.TryParse(Textbox1.Text, Integ) then
   msgbox("Umwandlung nicht möglich")
End if
Die Zelle eines DatgridView-Control kann recht unterschiedliche Informationen enthalten:
Texte, Zahlen, Bilder, Symbole,....
Aus diesem Grund liefert die "Value"-Eigenschaft einer "DatagridViewCell" die gespeicherten
Informationen in einer Variable des allgemeinen Datentyps "Object" zurück.
Wenn man diese Variable mit einer anderen Variable vergleichen möchte, ist zur Entwurfszeit
keine Kontrolle des Datentyps möglich. Bei "Strict On" meckert deshalb die IDE.
Auch in diesem Fall ist im Code die Kontrolle des Datentyps erforderlich.

Dafür gibt es verschiedene Möglichkeiten:
Dim Integ as Integer
 
If not TypeOf dg.Rows(0).Cells(0).Value Is Integer Then
   MsgBox "Kein Integer"    
else
   integ = CInt(dg.Rows(0).Cells(0).Value)
End If
 
If Not dg.Rows(0).Cells(0).Value.GetType.Equals(GetType(Integer)) Then
  Msgbox "Kein Integer"
else
   integ = Convert.ToInt32(dg.Rows(0).Cells(0).Value)
End If
 
If not Integer.TryParse(dg.Rows(0).Cells(0).value.ToString, Integ) Then
   msgbox "Kein Integer"
End if
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Probleme mit Option Strict On1.437Gespenst11.10.14 01:31
Re: Probleme mit Option Strict On1.127Manfred X11.10.14 06:16
Fehler-Korrektur954Manfred X11.10.14 17:15
Re: Probleme mit Option Strict On940minimalist13.10.14 19:36
Re: Probleme mit Option Strict On1.079minimalist13.10.14 19:39

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel