"We are back" « oc.at

struct in VB?

Jedi 06.03.2004 - 20:03 1107 18
Posts

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
gibts eine Möglichkeit in Visual Basic einen Struct (wie in c/c++) zu machen?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25688
Code:
Type FORGETITVBSUCKS
   bIWontCodeVBAnymore As Boolean
End Type

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
thx


ich mag VB auch ned - habs seit über 3 Jahren nimma angerührt :)

allerdings will mein Kompanie Kommandant unbedingt, dass das Projekterl in VB (bei Exceltabelle) realisiert wird.

ich hab eh 2 meiner Meinung nach schönere und bessere Lösungen vorgeschlagen ... was solls :rolleyes:
lieber drinnen sitzen als draußen Brücken auf- und abbaun :D

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
noch was:

Type TreeNode
ID as Integer
Next as TreeNode
End Type


gibt mir die Meldung: Microsoft Excel kann das Makro 'KleinerTest.xls!Modul1.Berechnung' nicht finden


Jetzt das ganze etwas detailierter:

Es soll ein "programm" :rolleyes: für Excel erstellt werden, dass Eingaben in Spalten auswertet und ergänzt
z.b. in Spalte B stehen ein haufen Namen, die eingelesen werden und daneben in Spalte C, D, ... was dazu kommt

ich bin es mal so heran gegangen, dass ich im Menü einen neuen Button gemacht und dem ein Makro zugewiesen hab. In diesem Makro mach ich dann alles.

Im Code Editor gibts beim Projekt eine Auflistung von Microsoft Excel Objekten und Modulen. Bei Excel Objekten ist die aktuelle Arbeitsmappe und die Tabelle(n) aufgelistet (bei mir eben "Tabelle1 (KleinerTest")
Bei den Modulen dürften dann z.b. die ganzen Makros aufgelistet sein - bei mir halt "Modul1"

Wenn ich nun den Typ definiere

Type TreeNode
ID as Integer
Next as Integer
End Type

funktionierts soweit ganz gut - nur dass ich dann alles in einer Liste halten und selbst verwalten muss.

Schöner würds sein, wenn ich

Type TreeNode
ID as Integer
Next as TreeNode
End Type

machen könnte.

Allerdings funktioniert das nicht. Es wird dann das Macro nicht mehr gefunden.
Ich bin schon drauf gekommen, dass vor der Funktion keine ausführbaren Bereiche stehen dürfen, damit die Funktion gefunden wird - aber beim Struct erstellen dürfte doch nichts ausgeführt werden ...

Woran kann es liegen?
Bearbeitet von Jedi am 07.03.2004, 09:34

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
Weiß wirklich keiner Rat?

:/

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
*nach oben schieb*

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Du darfst das Ding jedenfalls nicht "Next" nennen, weil das ein Schlüsselwort von VB ist. Eine richtige Lösung hab ich aber jetzt auch noch nicht gefunden.

EDIT: Hmm, das Next beeindruckt ihn gar nicht. Geht anscheinend doch.

Bei mir sagt er jedenfalls "Circular dependencies between modules"

EDIT2: Ich fürchte, man muss den Next-Pointer als Object deklarieren und dann immer casten, wenn man ihn braucht.
Bearbeitet von Ringding am 13.03.2004, 13:13

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
Bei mir gibts gleich am Anfang eine Fehlermeldung mit (ein Bild sagt bekanntlich mehr als 1000 Worte)click to enlarge

sry wegen quali - hab 56k Modem ;)
Bearbeitet von Jedi am 13.03.2004, 14:31

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Da fehlt ein dim

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
autsch ...

danke


nachtrag: wenn du mir noch sagst, wie man in VB einen Cast macht, hat sich der Thread erledigt :)
Bearbeitet von Jedi am 13.03.2004, 15:09

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25688
was willst casten? (gibts das wort?)

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
einer Object-Variable einfach einen eigenen Typ zuweisen.

z.B. wie in Java:

Object bla = new Object();
MyClass asdf = new MyClass();
bla = (Object)MyClass();

oder so ähnlich - ich komm grad vom Chargendienst zurück und steh grad a bissl daneben (durchmachen is da nix gutes :D ;) )

btw: "casten" hat mein ehemaliger Programmierlehrer zu Hauf im Unterricht verwendet - und er war ein alter C++ und Java Guru ... da muss es das wort doch fast geben ;)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25688
na ja.. germanism :p

vba is nicht wirklich oop.. soll heissen, wenn du keine vererbung hast, wieso willst du dann casten?

würd eher eine convert funktion machen die danach eine "konvertierte" klasse, struct (type dings halt) ausspuckt. besser gehts wahrscheinlich nicht.

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
ich glaub ich pfeif einfach drauf und verwalte das Ganze selbst in einer Liste


eines weiß ich schon sicher: das wird definitiv mein letztes VB Projekt(chen) sein (hab ich mir beim letzten Projekt vor über 4 Jahren auch schon gesagt - fällt mir grad wieder ein :D )



btw: edlen Postzeitpunkt hast du ;)
Bearbeitet von Jedi am 15.03.2004, 04:52

ICE3D

Addicted
Avatar
Registered: Aug 2002
Location: 127.0.0.1
Posts: 496
dürft zwar schon erledigt sein, aber wennst ein objekt einem anderen zuweisen willst musst das mit "set" machen also
Code:
dim testnode as TestNode2
set testnode = new TestNode2
set testnode = nothing
if testnode is nothing then
   msgbox "testnode = nothing"
end if
...so in der art
Bearbeitet von ICE3D am 18.03.2004, 16:32
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz