Wofür steht Dim

  • Allgemein

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von SeriTools.

    Wofür steht Dim

    Guten Morgen VB'ler,

    seit Jahren verwendet und nie hinterfragt.

    Wofür steht eigentlich das

    VB.NET-Quellcode

    1. Dim
    (Ausgesprochen/Übersetzt) beim Deklarieren von Variablen?

    Weiß es einer von euch?

    Mit freundlichen Grüßen euer

    Immortel

    Edit by nikeee13:
    Ich habe es mal in das Grundlagen-Forum verschoben, da es sich hier ja um eine VB-Frage handelt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

    Wobei die vollständig Antwort wäre:
    DIM stammt aus der BASIC Urzeit und wurde ursprünglich nur für Arrays benötigt. Einfache Variablen konnten ohne vorherige Deklaration verwendet werden, aber bei Arrays war natürlich die "Größe" (=DIMension) erforderlich. Als später das Deklarationserfordernis auf andere Variablen erweitert wurde, hat man einfach den vorhandenen Befehl recycled. Korrekter/logischer wäre gewesen:
    DECL i AS INTEGER (DECLARE = deklarieren)

    picoflop schrieb:

    Korrekter/logischer wäre gewesen:

    Wobei es auch Sprachen gibt, die zwischen declare und reserve unterscheiden.
    Deklarieren schafft demnach keinen Speicherplatz, sondern macht nur den Namen bekannt...

    Nur der Vollständigkeit halber ;)
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Ergänzend zu picoflops Erklärung:

    Das 'Dim' an sich deklariert nur. Das ist etwas irreführend. Es kommt, wie picoflop schon schrieb, aus der früheren BASIC-Zeit und wurde zur Dimensionierung verwendet.
    Die Dimensionierung (d. h. die Speicherreservierung) kann aber erst stattfinden, wenn man weiß, um welchen Datentyp es sich handelt. Deshalb ist das 'As Integer' der dimensionierende Teil (in diesem Fall 4 Bytes).

    Bsp:
    Dim a As Long
    Dim a heißt hier: Es gibt eine Variable names a (Deklaration)
    As Long heißt : Sie ist 8 Bytes groß. Reserviere mir das bitte. (Dimensionierung)

    In den neuen VB-Versionen ist das Dim wiederrum etwas zwiespaltiger, wie das 'var' in C#.
    Man nehme folgendes Beispiel:

    VB.NET-Quellcode

    1. Dim b = 10

    Eigentlich müsste irgendetwas hier merkwürdig sein, ist es aber nicht. Der Compiler erkennt hier, dass sich bei b um einen Integer handeln muss, was dann wie "Dim b as Integer = 10" behandelt wird.
    Ab wann dieses Feature kam, weiß ich nicht genau.
    Früher hat das zum sogen. "Late Binding" geführt. Erst der Ausführung des Programmes wurde festgestellt, was für ein Datentyp das "Teil" hatte. Es musste erst "geraten" werden um welchen Datentypen es sich dabei handelt. Das kann zu einer Performancebremse werden. Heute sollte Late-Binding allerdings kein Problem mehr sein.


    Edit: Habe den Thread mal in's On-Topic verschoben.
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „nikeee13“ ()

    Früher war das ganze noch viel schlimmer. :S
    VB3:

    VB.NET-Quellcode

    1. Dim i, j As Integer
    i war dann eine Variable vom Typ Variant, j vom Typ Integer. In ein Variant ließ sich alles reinpacken, das wurde dann bei dem 1. Zugriff festgelegt. ;(
    Wann dies behoben wurde, weiß ich leider nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    In den neuen VB-Versionen ist das Dim wiederrum etwas zwiespaltiger, wie das 'var' in C#.
    Man nehme folgendes Beispiel: Visual Basic Quellcode

    Quellcode

    1. Dim b = 10




    Eigentlich müsste irgendetwas hier merkwürdig sein, ist es aber nicht. Der Compiler erkennt hier, dass sich bei b um einen Integer handeln muss, was dann wie "Dim b as Integer = 10" behandelt wird.
    Ab wann dieses Feature kam, weiß ich nicht genau.
    Früher hat das zum sogen. "Late Binding" geführt. Erst der Ausführung des Programmes wurde festgestellt, was für ein Datentyp das "Teil" hatte. Es musste erst "geraten" werden um welchen Datentypen es sich dabei handelt. Das kann zu einer Performancebremse werden. Heute sollte Late-Binding allerdings kein Problem mehr sein.


    Das gibt es seit VS 2008

    Das habe ich erst kürzlich im meinem schlauen Buch gelesen ^^ Was ein Zufall

    Zitat aus Microsoft Visual Basic 2008 Das Entwicklerhandbuch:


    Der As-Part hinter einer Variablendeklaration ist übrigens innerhalb von Prozeduren (zum Beispiel innerhalb
    von Methoden, die mit Sub oder Function) definiert werden, mit Visual Basic 2008 nicht mehr erforderlich, wenn Deklaration
    und Definition in einem Rutsch erfolgen. Sobald die Option lokaler Typrückschluss (mehr dazu im entsprechenden Abschnitt in
    Kapitel 11) aktiviert ist, kann der Visual Basic-Compiler bei einer Ausdruckszuweisung während einer Deklaration aufgrund des
    Typs des Ausdrucks den Typ für die Deklaration erkennen. Anstelle also Definition und Deklaration einer String-Variablen mit



    Quellcode

    1. Dim süßeZoe as String = "Zoe Dröge“




    reicht es auch




    Quellcode

    1. Dim süßeZoe = "Zoe Dröge“





    zu schreiben. Der Compiler erkennt nämlich, dass der konstante Ausdruck »Zoe Dröge« ein String ist und zieht bei der »Vertypisierung
    « den entsprechenden Rückschluss.

    ist dann aber doch durch die option Strict (welche ich immer auf ON habe) wieder hinfällig da es doch alles extra deklariert haben will oder?

    VB.NET-Quellcode

    1. Dim furie = "kratzbürste" 'in VS 2010 ist furie blau unterstrichen mit: Option Strict ON requires all variable declarations to have an 'As' clause
    2. Dim furie1 As String = "kratzbürste" 'nichts blau unterstrichen^^
    3. Dim furieZ = 10
    4. Dim furieZ1 As Integer = 10
    5. 'wieder selbes spiel, furieZ blau unterstrichen furieZ1 nicht^^