Announcement

Collapse
No announcement yet.

Deklaration Regeln?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Deklaration Regeln?

    Ich habe hier fremden Code.
    Darin fehlt die Deklaration. Der bringt natürlich Fehlermeldungen.
    Wie kann ich erkennen, welche die Deklarationen ich anlegen muss?
    Danke vom
    Schüler

  • #2
    Wenn Du den fremden Code bereitstellen könntest wäre gezielter zu helfen (es sei denn er ist so riesig, dass man sicheh nicht einlesen kann). Anhand der Frage "Wie deklariere ich" nehme ich an, Du bist Anfänger, ich versuche meine Erklärung entsprechend einfach zu halten.

    Variablen müssen deklariert werden, damit der Computer einen gewissen Speicherbereich für die Information reservieren kann, Variablen kannst Du Dir also als Schachtel vorstellen, die Information als Gegenstand. Wenn Du eine Information speichern willst, sagst Du dem Rechner, dass er einen bestimmten Gegenstand in eine bestimmte Schachtel legen soll, dazu muss die Schachtel aber existieren, wo und in welchem Regal die Schachtel dann steht, darum kümmert sich der Rechner. Da verschiedene Gegenstände verschieden große Schachteln brauchen, musst Du dem Rechner beim Erstellen der Schachtel sagen, wie groß sie sein soll, und das machst Du, indem Du der Variablen einen Typ zuweist.

    Zur Deklaration im Programmtext: Innerhalb einer Sub oder Function deklarierst Du mit Dim <variablenname> As <Typ>, diese Variable ist dann innerhalb des Blocks sichtbar, in dem die Variable deklariert wurde, ist also automatisch Private(siehe Beispielcode unten). Parameter einer Funktion oer Prozedur werden durch den Funktionskopf deklariert und können in der Funktion als Variablen behandelt werden, auch sie sind Private, also nur innerhalb der Funktion ansprechbar, haben aber noch zusätzliche Modifikatoren ByRef oder ByVal, je nachdem ob eine Änderung des Wertes der Variable an den Aufrufer der Funktion zurückgegeben werden soll.

    Außerhalb von Funktionen muss bei der Deklaration immer ein Modifikator Public, Private, Protected oder Friend dazu, dafür kannst Du dann das Dim weglassen. Für den Anfänger müsste Public und Private reichen, Public heißt die Variable ist auch außerhalb der Klasse/des Moduls sichtbar, Private "versteckt" die Variable vor dem Zugriff von außen.

    Bei Klassen- und Instanzvariablen wird es noch eine Stufe komplizierter. Hier kommt es darauf an, ob sie über den Klassennamen verfügbar sein sollen, und jede Instanz den gleichen Wert hat (dann brauchen sie den Zusatz Shared), oder ob die einzelnen Instanzen individuelle Werte haben, dann muss aber immer eine Instanz erzeugt werden, um den Wert zu lesen. (Wenn das momentan noch böhmische Dörfer für Dich sind, dann musst Du erstmal was über Klassenkonzepte und objektorientiertes Programmieren lesen)

    Und dann gibt es immer noch die globalen Variablen, das ist aber mehr ein Relikt aus früheren Zeiten, und sollte soweit irgends möglich, vermieden werden. Variablen auf globaler Ebene zu deklarieren endet grundsätzlich im Chaos (d.h. Absturz Deines Programms), weil es quasi unmöglich ist, zu verfolgen wer wann welche Variable ändert.

    Bei der Deklaration kann der Variablen gleich ein Initialwert mitgegeben werden, bei Standardtypen per einfacher Zuweisung, bei Objekttypen am einfachsten durch das Schlüsselwort New innerhalb der Deklaration. Wird einer Variablen kein Wert zugeordnet, so hat sie den dem Typ entsprechenden Nullwert (Aufgepasst bei Strings: Der Nullwert ist NICHT "" sondern Nothing), was bei Objekttypen zu Laufzeitfehlern führen kann.

    Code:
    Public Class clsBeispiel
       Public m_Titel As String
       Private m_ID As Integer
    
       Public Sub New(Titel As String) 'Funktionen müssen auch als Public oder Private bezeichnet werden, allerdings heisst es hier dann "definiert", der Konstruktor "New" muss immer Public sein
          m_Titel=Titel
          m_ID=Titel.Length() ' Length ist ein Public Property des Typs String, das zu erklären würde aber jetzt zu weit führen
       End Sub
    End Class
    
    Public Sub Beispiel(ByVal Param1 As String, ByVal Param2 As Integer)
       Dim x as Integer
       Dim bsp as New clsBeispiel(Param1)
       If Param1="" then
          Dim xx As Integer = 5
          bsp.m_ID=xx ' schlägt fehl, da m_ID Private ist
       Else
          xx=7 ' schlägt fehl xx ist hier nicht sichtbar, weil nur im Then-Teil deklariert
          bsp.m_Titel="Hallo" ' erlaubt
          For i As Integer = 0 To Param2
             bsp.m_Titel = bsp.m_Titel & i.ToString()
          Next
          If i > x then ' schlägt fehl: i ist nur für die Schleife deklariert
             doSomething()
          End If
          Dim Param2 As Integer ' schlägt fehl: Param 2 "verdeckt" Variable aus höherem Block
       End If
    End Sub
    So ich hoffe das ist in Grundzügen das, was erstmal notwendig ist, um mit dem Programmieren anzufangen.

    Viel Spaß
    Martin
    Zuletzt editiert von M.Dietz; 19.08.2008, 13:37. Reason: Blockstruktur korrigiert

    Comment


    • #3
      Deklaration

      Hallo M.Dietz.
      das ist eine wirklich gute Beschreibung.
      Wo finde ich ein Buch, dass die Grundlagen so erklärt.
      Bist du Pädagoge, könnte ich bei dir was lernen?
      Es wäre schön wenn Du dich mal melden würdest
      Hier meine Rufnummer 02202-982121 oder 092123
      Gruß vom einem echten lernwilligen
      Schüler

      Comment


      • #4
        Hiho Schüler.

        Hier ein relativ gutes OpenBook, welches dir die Grundlagen der vb.net Programmierung näher bringt.

        Klick mich

        Ein weiteres habe ich noch auf meiner Platte gefunden. Ich finde dies noch ein wenig besser als das OpenBook. Gefunden hatte ich es damals bei activevb.de
        Leider finde ich es dort gerade nicht mehr. Wenn du interesse hast, dann kann ich es dir auch per Mail schicken.

        Mfg Myst

        Comment


        • #5
          Deklarieren

          Hallo Myst,
          wenn Du das Buch findest und es mir schickst, wäre ich dir dankbar.
          Der Schüler

          Comment


          • #6
            Originally posted by Schüler View Post
            Hallo M.Dietz.
            das ist eine wirklich gute Beschreibung.
            Wo finde ich ein Buch, dass die Grundlagen so erklärt.
            Bist du Pädagoge, könnte ich bei dir was lernen?
            Es wäre schön wenn Du dich mal melden würdest
            Hier meine Rufnummer 02202-982121 oder 092123
            Gruß vom einem echten lernwilligen
            Schüler
            Nein, ich bin natürlich kein Pädagoge, ich bin Informatiker, habe allerdings während des Studiums auch einige Semester als Grundlagentutor gearbeitet, und da kriegt man natürlich von der Hochschule eine kurze didaktische Schulung verpasst (wie man Dinge erklärt, das vorhandene Wissen einschätzt um darauf aufzubauen und so weiter). Ich helfe natürlich gerne, da mein Hauptberuf aber ist, Programme zu entwickeln, und nicht Programmieren zu lehren, sind diese Dinge auf gelegentliche Besuche in Foren beschränkt, wo ich dann auch meinerseits versuche, von den Experten zu lernen.

            Übrigens: es ist immer gefährlich, Telefonnummern im Internet zu veröffentlichen, die sind zwar nicht ganz so SPAM-trächtig wie email-Adressen, aber wenn man täglich 3-4 Anrufe vom Anrufbeantworter löscht, die wieder nur etwas verkaufen wollen, oder sogar mitten im Satz anfangen (weil nur Anrufautomaten dahinterhängen, die nicht warten können bis der AB mit seinem "Dies ist der Anschluss von..." Gelaber fertig ist) ist man da vielleicht auch etwas hypersensibel. Telefonnummern kannst Du einfach durch private Nachrichten weitergeben, ist sicherer

            Comment


            • #7
              Deklarieren, danke

              Besten Dank für deine Antwort, Programmierer sind immer im Stress, das weiß ich
              Also alles Gute, vielleicht treffen wir uns hier mal wieder.
              Der Schüler
              ein Detail: Ich bin 74 und hab mir noch was vorgenommen.

              Comment

              Working...
              X