Property- Neuer Syntax & Error "End of Statem"

Darkflint

Mitglied
hier ist ein Code fuer UPN-Taschenrechner. Bei VB6 muesste das problemlos gehen, aber da ich VS2005 habe, geht das so nicht. Bei Proberty Get sagt er mir, das Get mit Property nicht mehr unterstuetzt wird und ich die neuen Deklarations-Syntaxe nutzen soll. Aber wie die heissen, darueber schweigt er sich aus. Und die Hilfe hilft auch nicht wirklich weiter -.-
Dann gibts da noch die eine oder andere Meldung, aber ich denke, wenn das Problem behoben ist, sind die meisten Meldungen auch weg.
 
Danke, zieh ich mir mal gleich rein.

Code:
    Public Sub Push(ByVal Item As String)
        If m_lOffset > UBound(m_Stack) Then _
            'ReDim Preserve m_Stack(m_lOffset + 1000) As String
            Dim Preserve m_Stack(m_lOffset + 1000) As String
        End If
        m_Stack(m_lOffset) = Item
        m_lOffset = m_lOffset + 1
    End Sub

So, die Propertygeschichten konnte ich alle erledigen.
Jetz hab ich nur noch ein Error, und das besagt, das das fett markierte "End of Statement expected".
Ich versteh allerdings nicht, wie ich da was beenden soll, es ist doch eine Deklaration?

EDIT:
Okay, hatte noch nicht den zweiten Teil eingefuegt, daher gibts nun doch noch einen weiteren Fehler^^ Alle anderen konnte ich selbststaendig soweit erledigen, jedenfalls meckert er da nicht mehr.
Kann mir wer etwas ueber CDoubleStack sagen? Google hat nur 2 Eintraege ausgespuckt, der eine von der Seite, wo ich es herhabe, der andere von irgendeiner C-Programmierung, was mir auch nicht weiterhalf.
NumStack wurde als CDoubleStack definiert, was fuer VS aber unbekannt ist. Die Hilfe findet auch nichts dazu, Google siehe paar Zeilen hoeher.
Code:
        Dim NumStack As CDoubleStack
        Dim I As Long Dim tmpNumber As Double
        Dim Equation As String
        Dim ParseRPN As Double

        Tokens = Split(Equation, " ")
        NumStack = New CDoubleStack

Und kann man irgendwie Threadtitel aendern? *g* [topic edit by Maik]
 
Du solltest dir dazu nochmal den Artikel durchlesen, den durch bereits im ersten Beitrag gepostet hast. Hier wird beispielhaft ein CStringStack implementiert. Diesen könntest nun für Double-Werte -> CDoubleStack Implementieren.

Aber, du könntest dein Programm auch so verändern, dass es mit den Stacks aus .NET zurechtkommt. Siehe hier http://msdn.microsoft.com/en-us/library/system.collections.stack.aspx

Da du ja hier .NET programmierst, würde ich diesen Weg gehen.

Edit:
Bzgl. dem End of Statement expected Fehler: Entferne den Unterstrich am Ende der Zeile
Code:
If m_lOffset > UBound(m_Stack) Then _
Mit dem Unterstrich teilst du VB mit, dass der Befehl (hier die Bedingung) in der nächsten Zeile weiter geht.
 
Zuletzt bearbeitet:
Auf die Idee, nach Stack Klassen zu suchen, bin ich natuerlich nicht gekommen xD
Mit dem End of Statement taeuscht du dich leider, hat keinen Einfluss.
 
Der Unterstrich sollte definitiv weg, der gehört dort schlicht nicht hin.

Jetzt hört man VB.NET Latein allerding langsam aus, aus VB6 weiß ich noch, dass man Array mit ReDim redimensioniert, diese Zeile hast du allerdings auskommentiert und durch ein Dim ersetzt, welches in VB aber lediglich eine Variable deklariert.

Durch die Deklaration im Gültigkeitsbereich der Bedingung, ist die Variable außerhalb der If - End If Klammerung nicht mehr bekannt (könnte auch sein, das ich hier vollkommen danebenliege.
Du kannst der Sache ja mal nachgehen, wenn du die Stack-Collection verwendest, sollte dieser Code ja nicht mehr gebraucht werden.
 
Arrays kann man in .Net nicht mehr ReDimmen, daher hab ich die ausgeklammert und gegen ein einfaches Dim ausgetauscht. Fuer den Fall, das das so nicht geht, hab ich die alten ReDims nur ausgeklammert.
Aber ist jetz eh egal, ich hab es einfach ueber den Haufen geschmissen und auf meine eigenen Art und Weise gemacht, wie es sogar in VB6 gehen muesste^^ Ist vielleicht jetz nicht optimal der Code, aber es scheint alles zu laufen ;)
 
Zurück