Gelernt habe ich: immer 'option explicit', 'variant' ist böse, 'variant' wird nicht benutzt.
Ich sehe "variant" aber so oft in fremden Macros, dass ich doch gerne Bescheid wüsste.
Variant ist nicht eigentlich 'böse', es ist nur häufig nicht sinnvoll ihn einzusetzen, zum Einen wegen der Gründe die Michael nennt, zum Anderen beispielsweise auch um ggf. Speicherplatz zu sparen.
Da Variant alle anderen Typen beinhaltet wird natürlich immer soviel Platz reserviert wie der speicherplatzintensivste Typ benötigt (ich kann jetzt aus dem Hut garnicht sagen wieviel Variant minimal reserviert (16 Byte?)), nur benötigt beispielsweise ein Integer 2 Byte und ein Long 4 Byte, wenn Du also statt eines nötigen Integer ein Variant verwendest verschwendest Du schon bei diesem Vergleich zumindestens 2 Byte).
Wenn Deiner Beobachtung nach Variant trotzdem häufig eingesetzt wird, so wohl meist weil bei der Deklaration von Variablen nicht explizit ein Typ angegeben wird und sie dann, wie Michael schon feststellt, automatisch Variant sind. Das ist dann im Prinzip eher nachlässiger Programmierstil.
Warum auch immer irgendwer den Typ Variant empfiehlt ist mir nicht klar.
Du empfiehlst ihn beispielsweise im Zusammenhang mit der Benutzung von Calc-Tabellenfunktionen innerhalb von Makros:
http://www.starbasicfaq.de/WiekannmanFu ... nden..html
Es lassen sich aber sicher noch eine Reihe anderer Anwendungsfälle finden. Ich verwende z.B. häufiger Konstrukte der Form:
was meines Wissens durch die Array-Funktion automatisch vom Typ Variant ist
(selbst wenn man vorher versucht x anders zu deklarieren und ungeachtet der Tatsache das ich hier nur Strings übergebe)
Gruß
Stephan
[quote]Gelernt habe ich: immer 'option explicit', 'variant' ist böse, 'variant' wird nicht benutzt.
Ich sehe "variant" aber so oft in fremden Macros, dass ich doch gerne Bescheid wüsste.[/quote]
Variant ist nicht eigentlich 'böse', es ist nur häufig nicht sinnvoll ihn einzusetzen, zum Einen wegen der Gründe die Michael nennt, zum Anderen beispielsweise auch um ggf. Speicherplatz zu sparen.
Da Variant alle anderen Typen beinhaltet wird natürlich immer soviel Platz reserviert wie der speicherplatzintensivste Typ benötigt (ich kann jetzt aus dem Hut garnicht sagen wieviel Variant minimal reserviert (16 Byte?)), nur benötigt beispielsweise ein Integer 2 Byte und ein Long 4 Byte, wenn Du also statt eines nötigen Integer ein Variant verwendest verschwendest Du schon bei diesem Vergleich zumindestens 2 Byte).
Wenn Deiner Beobachtung nach Variant trotzdem häufig eingesetzt wird, so wohl meist weil bei der Deklaration von Variablen nicht explizit ein Typ angegeben wird und sie dann, wie Michael schon feststellt, automatisch Variant sind. Das ist dann im Prinzip eher nachlässiger Programmierstil.
[quote]Warum auch immer irgendwer den Typ Variant empfiehlt ist mir nicht klar.[/quote]
Du empfiehlst ihn beispielsweise im Zusammenhang mit der Benutzung von Calc-Tabellenfunktionen innerhalb von Makros:
http://www.starbasicfaq.de/WiekannmanFunktionenvonCalcverwenden..html
Es lassen sich aber sicher noch eine Reihe anderer Anwendungsfälle finden. Ich verwende z.B. häufiger Konstrukte der Form:
[code]x = Array("abc", "def", "ghi")[/code]
was meines Wissens durch die Array-Funktion automatisch vom Typ Variant ist
(selbst wenn man vorher versucht x anders zu deklarieren und ungeachtet der Tatsache das ich hier nur Strings übergebe)
Gruß
Stephan