Objekt nicht vorhanden Set Controls.Add

Hallo,
Ich hatte vor einiger Zeit einige Fragen zum Thema

Set abc = Controls.Add("Forms.TextBox.1")

Da dieses nun sehr unübersichtlich geworden ist eröffne ich hier ein neuen Thread mit einer passenden Überschrift.

Ich habe einen recht einfachen Code(er funktioniert!):

Private Sub CommandButton1\_Click()
Set abc = Controls.Add("Forms.TextBox.1")
 With abc
 .Name = "Bauer"
 End With
 abc.Top = 10
End Sub

So, jetzt meine Fragen:

  1. Warum ändert er den Namen nicht auf „Bauer“? (.Name = „Bauer“)
  2. abc als Name erkennt er, wenn ich jetzt ein neuen Sub habe, dann gibt es diesen Namen nicht mehr (Objekt erforderlich). Muss ich diesen erst mal „Dimmen“ und wie?

Hoffe ihr könnt mir helfen!

Gruß
GURKE

Hallo,

Hallo

Ich hatte vor einiger Zeit einige Fragen zum Thema

Set abc = Controls.Add(„Forms.TextBox.1“)

Da dieses nun sehr unübersichtlich geworden ist eröffne ich
hier ein neuen Thread mit einer passenden Überschrift.

Ich habe einen recht einfachen Code(er funktioniert!):

Private Sub CommandButton1_Click()
Set abc = Controls.Add(„Forms.TextBox.1“)
With abc
.Name = „Bauer“
End With
abc.Top = 10
End Sub

So, jetzt meine Fragen:

  1. Warum ändert er den Namen nicht auf „Bauer“? (.Name =
    „Bauer“)

Das sollte er eigentlich machen. Woher weisst du das er dies nicht macht?
Aber wenn du schon mit der With Klausel arbeitest, warum packst du dann ie Zuweisung an die TOP Eigenschaft da nicht mit rein?

  1. abc als Name erkennt er, wenn ich jetzt ein neuen Sub habe,
    dann gibt es diesen Namen nicht mehr (Objekt erforderlich).
    Muss ich diesen erst mal „Dimmen“ und wie?

ABC wird er niemals als Namen erkennen, da dieser schlichtweg Bauer ist, aber nur in der Sub CommandButton1_Click. Danach nicht mehr!
Du hast Dir eigentlich schon die Frage selbst beantwortet.
Gehen wir mal zurueck zu der Commandbutton1_Click. Dort weisst du der Variablen ABC, (welche nirgends declariert ist) eine Instanz der neu erzeugten Textbox zu. Diesen gibst du Ihr auch den Namen „Bauer“

Nun befindest du dich in einer neuen Sub. ABC ist aber nicht declariert und nun versuchst du auf ABC zuzugreifen was einfach mal nicht geht. Versuchst du dies, bekommst du die von dir besagte Fehlermeldung!

Abhilfe dagegen schafft

1: Nicht Sinnlos etwas probieren und sich wundern das es nicht geht
2: Ein Grundlagenbuch nehmen und dieses mal studieren
3: Seinen PAP mal durchdenken
4: Je nach Aufgabenstellung, eine ordentlich Declarierung der benötigten Variablen machen
5: OPTION EXPLICIT EINSCHALTEN!!!

Hoffe ihr könnt mir helfen!

Gruß
GURKE

MfG Alex

Hallo,


So, jetzt meine Fragen:

  1. Warum ändert er den Namen nicht auf „Bauer“? (.Name =
    „Bauer“)

Das sollte er eigentlich machen. Woher weisst du das er dies
nicht macht?

Weil wenn ich mit Bauer.Text den Inhalt abragen will, er mir sagt, das das Objekt nicht vorhanden sei. Außerdem kann ich danach immernoch mit abc.Text den Inhalt auslesen, was eigentlich nicht mehr gehen dürfte.

Aber wenn du schon mit der With Klausel arbeitest, warum
packst du dann ie Zuweisung an die TOP Eigenschaft da nicht
mit rein?

Das liegt daran, das ich diesen Sub nur zum probieren erstellt habe und die With-Anweisung mal länger war und ich diese nun kürzte. Und es ging schneller die Zeile in der With-Anweisung zu löschen als die komplette With-Anweisung zu löschen und danach wieder was hinschreiben. Kurz, es hat mit dem Thema eigentlich nichts zu tun!

  1. abc als Name erkennt er, wenn ich jetzt ein neuen Sub habe,
    dann gibt es diesen Namen nicht mehr (Objekt erforderlich).
    Muss ich diesen erst mal „Dimmen“ und wie?

ABC wird er niemals als Namen erkennen, da dieser schlichtweg
Bauer ist, aber nur in der Sub CommandButton1_Click. Danach
nicht mehr!

Also soll der Name danach Bauer sein? Wie ich oben schon erklärt habe ist dies nicht der Fall!

Du hast Dir eigentlich schon die Frage selbst beantwortet.
Gehen wir mal zurueck zu der Commandbutton1_Click. Dort weisst
du der Variablen ABC, (welche nirgends declariert ist)

Weshalb ich ja auch nachfrage…

eine Instanz der neu erzeugten Textbox zu. Diesen gibst du Ihr auch
den Namen „Bauer“

Nun befindest du dich in einer neuen Sub. ABC ist aber nicht
declariert und nun versuchst du auf ABC zuzugreifen was
einfach mal nicht geht. Versuchst du dies, bekommst du die von
dir besagte Fehlermeldung!

Ah super, du hast mein Problem erneut beschrieben, aber ich kenne das Problem bereits und erhoffte hier mir eine Lösung…!

Abhilfe dagegen schafft
1: Nicht Sinnlos etwas probieren und sich wundern das es nicht
geht

In meinen Augen ist dieses nicht sinnlos. Man braucht für jede Tätigkeit eine gewisse Erfahrung. Und Erfahrung kann man wunderbar durch Ausprobieren sammeln! Also unterlasse bitte demnächst solche Beiträge. Sie helfen keinen weiter!

2: Ein Grundlagenbuch nehmen und dieses mal studieren

Meines Erachtens reicht meine Grundlage vollkommen aus. Ich habe schon einiges erfolgreich programmiert und lerne so stets dazu. Komme ich bei einer Sache nicht weiter, so lese ich nicht ganze Bücher, sondern frage Leute, du gehörst nur zum Teil dazu, die mir vernünftig weiterhelfen können und es auch tun.

3: Seinen PAP mal durchdenken

Keine Ahnung was ein PAP sein soll. Habe auch kein Interesse dieses herauszufinden, solange es nichts mit dem Themenhintergrund zu tun hat!

4: Je nach Aufgabenstellung, eine ordentlich Declarierung der
benötigten Variablen machen

Vll. ließt du mal meine Frage:

Muss ich diesen erst mal "Dimmen" und wie?

Du nennst es deklarieren, ich dimmen.

–> Also: Durchlesen, nachdenken, sinnvoll antworten!!

Gurke

Hallo Gurke,

  1. Warum ändert er den Namen nicht auf „Bauer“? (.Name =
    „Bauer“)

Das sollte er eigentlich machen. Woher weisst du das er dies
nicht macht?

Weil wenn ich mit Bauer.Text den Inhalt abragen will, er mir
sagt, das das Objekt nicht vorhanden sei.

sagt der Debugger das, oder sagt er daß die Variable nicht deklariert ist?

Außerdem kann ich
danach immernoch mit abc.Text den Inhalt auslesen, was
eigentlich nicht mehr gehen dürfte.

Warum soll das nicht gehen, zur Laufzeit gilt dein „Set abc=…“

Private Sub CommandButton1_Click()
Dim abc
Set abc = Controls.Add(„Forms.TextBox.1“, „Bauer“, True)
Controls(„Bauer“).Top = 10
End Sub

Kurz, es hat mit dem Thema eigentlich nichts zu tun!

Hätteste auch kurz sagen können, „kam vom testen o.ä.“

Du hast Dir eigentlich schon die Frage selbst beantwortet.
Gehen wir mal zurueck zu der Commandbutton1_Click. Dort weisst
du der Variablen ABC, (welche nirgends declariert ist)

Weshalb ich ja auch nachfrage…

Nein. Du hast wegen „Bauer“ nachgefragt.

3: Seinen PAP mal durchdenken

Keine Ahnung was ein PAP sein soll. Habe auch kein Interesse
dieses herauszufinden, solange es nichts mit dem
Themenhintergrund zu tun hat!

Ansichtssache, ich find, ein PAP steht sicher nicht im Themenhintergrund,
der steht nämlich dominant im Vordergrund. Ohne den läuft gar nix. Nur mit PAP, zumindest in vagen Schritten im Kopf geplant kann man gar nicht etwas fertig programmieren.
Entwickelt man ihn schriftlich, zeichnerisch gut vor, so ist eine hauptaufgabe erfüllt, der Rest, die kleine Programmiererei geht dann fix.

Zugegeben, hat jetzt mit dieser deiner Anfrage nix zu tun, aber sicher sehr empfehlenswert in grundsätzlicher Hinsicht zum Programmieren.

PAP, Struktogramm, EVA-Prinzip usw. muß man zumindest kennen.

4: Je nach Aufgabenstellung, eine ordentlich Declarierung der
benötigten Variablen machen

Vll. ließt du mal meine Frage:

Muss ich diesen erst mal „Dimmen“ und wie?

Du nennst es deklarieren, ich dimmen.

Dazwischen gibt es durchaus Unterschiede in anderen Sprachen, aber nicht in VBA.
Benutze immer Option Explicit wie von Alex geraten.

Da mir dein Name als Anfrager nicht unbekannt ist, könnt ich fast schwören daß ich das mit Option Exlicit auch schonmal sagte.
Das ist jetzt aber nur eine Mutmaßung meinerseits.
Also nur eine Annahme, da ich diese Empfehlung sehr oft gebe.

Eines solltest du begurken äh bedenken, andere Helfer hier lesen mit wie du auf die Hilfe von Alex reagierst. M.E. hast du überaus schroff reagiert.

Und was in keinem Forum der Welt gern gesehen wird ist, Fragen stellen, Antworten erhalten, ggfs noch mal melden, dann aber ausklinken und nie mehr melden sodaß andere Antworten in der Leere stehen bleiben.

Du hast da derart paar Baustellen im aktuellen Beitragsbrett. Arbeite die bitte mal ab.
Sonst krieg ich leider Gurkenallergie und kann keine Gurkenanfragen mehr beantworten.

–> Also: Durchlesen, nachdenken, sinnvoll antworten!!

*Kopfschüttel* willste dich hier rumprügeln oder sachliche Hilfe haben? Noch dazu passt dieser Spruch auf dich.

Gruß
Reinhard

Hallo,

Kommen wir einmal auf meinen Beitrag zurueck.

Wenn du ein Grundlagenbuch studiert haettest, oder nicht so forsch reagiert haettest, würde man dir sicherlich einiges mehr erklären.
Aber nun gut. Du weisst sicherlich das du mit Variablen hantierst. Variablen werden im Stack abgelegt. Handelt es sich hierbei um ein Object, was es ja in deinem Falle ist, so hast du im Stack nur eine Refernez rüber zum Heap stehen. Auf Deutsch einen Verweis was nur eine Zahl ist!

Durch die Anweisung „Set ABC= …“ legst du eine Variable im Stack an, die auf den Heap zeigt und genau da auf das Object. Die Textbox! Wenn Du nun ABC in einem Sub declarierst oder so schön wie du es immer sagst „Dimmst“ dann ist sie logischerweise auch nur dort gültig! Sobald du die Sub verlaesst, ist sie nicht mehr gültig und du hast deinen Speicher sinnlos vollgemuellt! Du schaffst es dann nicht mehr auf die Instanz zuzugreifen oider gar zu löschen!

Jedes Object hat einen Namen. Durch die Zuweisung von Variable.Name=… gibst du ihr einen Namen. Möchtest du nun auf das Object mittels den Namen zugreifen, so kannst du das m.E. via Controls(Name) machen, was aber nicht der Sinn ist! Möchtest du auf das Control mit einen definierten Namen zugreifen, so mache das gleich in der Set Anweisung.
Aber dazu musst du, je nachdem wie dein Proggi sein soll, vorher die Variable bekannt machen. Ob nun als Private oder Public, das liegt wiederrum daran was du alles anstellen willst und wo sie denn Verfügbar sein soll. Ja, es gibt auch mehrere Formulare etc. mit denen man arbeiten kann!

Wenn du nun einmal 1 und 1 zusammen zaehlst wirst du sicherlich erkennen, das man deine Frage so nicht beantworten kann, denn ein

private xyz as ....
oder
public xyz as ...
oder
private WithEvents xyz as ...

wirst du ja sicherlich kennen!

MfG Alex

Weil wenn ich mit Bauer.Text den Inhalt abragen will, er mir
sagt, das das Objekt nicht vorhanden sei. Außerdem kann ich
danach immernoch mit abc.Text den Inhalt auslesen, was
eigentlich nicht mehr gehen dürfte.

Weil Bauer nicht die Refernz ist die im Stack steht, sondern ABC!

Das liegt daran, das ich diesen Sub nur zum probieren erstellt
habe und die With-Anweisung mal länger war und ich diese nun
kürzte. Und es ging schneller die Zeile in der With-Anweisung
zu löschen als die komplette With-Anweisung zu löschen und
danach wieder was hinschreiben. Kurz, es hat mit dem Thema
eigentlich nichts zu tun!

Das sollte dann dazu geschrieben werden …

Also soll der Name danach Bauer sein? Wie ich oben schon
erklärt habe ist dies nicht der Fall!

Wie wäre es dann via einer Anweisung alla

Set Bauer= ....

Danach kannst du mittels Bauer.Eigenschaft auf das Element zugreifen

Ah super, du hast mein Problem erneut beschrieben, aber ich
kenne das Problem bereits und erhoffte hier mir eine
Lösung…!

Haettest du dir das alles mal richtig durchgelesen und darueber auch nachgedacht, haettest du wenigstens schon einmal den Grund gewusst, warum dein Source nicht ihren Dienst wie gewünscht macht.

In meinen Augen ist dieses nicht sinnlos. Man braucht für jede
Tätigkeit eine gewisse Erfahrung. Und Erfahrung kann man
wunderbar durch Ausprobieren sammeln! Also unterlasse bitte
demnächst solche Beiträge. Sie helfen keinen weiter!

Das ist richtig, jedoch sollte man schon die Grundkenntnisse haben!
Ich fahre auch Auto und lerne dazu ( Werde sicherer beim fahren, dennoch musste ich die Fahrschule absolvieren und nicht gleich losfahren!)
Aber ich werde mich in Zukunft hüten, dir nochmals eine Antwort zu geben!
Dann wurschtel eben etwas zusammen erfreue dich wenn es funktioniert und aergere dich dann in 6 Monaten, wenn Ereignisse ausgelöst werden, woran du nicht gedacht hast und dein Project dann nicht mehr läuft … Ist meistens so, und um so mehr, wenn man keinen PAP ( Der in deine Augen ja überfluessig ist) erstellt hat…

Meines Erachtens reicht meine Grundlage vollkommen aus. Ich
habe schon einiges erfolgreich programmiert und lerne so stets
dazu. Komme ich bei einer Sache nicht weiter, so lese ich
nicht ganze Bücher, sondern frage Leute, du gehörst nur zum
Teil dazu, die mir vernünftig weiterhelfen können und
es auch tun.

Dann sollte man aber mindestens wissen wie man gültig Declariert!

3: Seinen PAP mal durchdenken

Keine Ahnung was ein PAP sein soll. Habe auch kein Interesse
dieses herauszufinden, solange es nichts mit dem
Themenhintergrund zu tun hat!

Das hat es eine ganze Menge. Aber darauf hast du ja keine Lust!

Vll. ließt du mal meine Frage:

Muss ich diesen erst mal „Dimmen“ und wie?

Du nennst es deklarieren, ich dimmen.

Richtig und lese nun mal weiter oben das man das nicht so einfach beantworten kann … Da es da eben mehrere Lösungswege gibt …

–> Also: Durchlesen, nachdenken, sinnvoll antworten!!

Merk Dir diese Worte …

Gurke

MfG

Hi Anfrager.

nach diesem langen Post scheint mir: Du fügst über VBA einer Userform ein Control zu und wunderst Dich, warum der Name des neuen Controls nicht „Bauer“ werden kann.

M.E. ist das ein Syntaxfehler Deinerseits. Die Symtax für das Zufügen eines Controls lautet i.A.:

Für andere Steuerelemente Set Control = object.Add( ProgID [, Name [, Visible]])

Das Problem scheint mir zu sein: Weil Du an dieser (notwendigen) Stelle keinen Namen vergibst, wird dem neuen Control vom Programm (Word, Excel) ein Name zugeiwesen.
Dieser Name ist schreibgeschützt (kuckst Du bitte in der Hilfe). Deshalb scheitern auch Deine Versuche, den Namen zu ändern.

M.

Dieser Name ist schreibgeschützt (kuckst Du bitte in der
Hilfe).

hallo Markus,

der Name eines zur Laufzeit erstellten Objekts ist nicht schreibgeschützt.
Den kann ich zur Laufzeit auch ändern.

Gurke hat annere Probleme.

Gruß
Reinhard

Hi Reinhard,

aber warum sollte gurke das tun? Er soll m.E. einfach die Befehle eingeben, wie sie von VBA erwartet werden. Dann ist er auf der sicheren Seite.

M.E. kommen hier nur konzeptionelle Probleme zum Vorschein, die gurke zu umgehen sucht, indem er unnötige Sachen macht. Warum muß man denn ein Control einfügen und es in einem zweiten Schritt umbenennen, statt es schon beim Einfügen richtig zu benennen?

Du magst recht haben, daß Umbenennen zur Laufzeit möglich ist. Aber deshalb ist es noch lange nicht sinnvoll. Deshalb machte ich die gurke auf die Syntax beim Einfügen aufmerksam. Und nach erneuter Lektüre der Posts tendiere ich dazu, bei meiner Meinung zu bleiben.

M.

Du magst recht haben, daß Umbenennen zur Laufzeit möglich ist.
Aber deshalb ist es noch lange nicht sinnvoll. Deshalb machte
ich die gurke auf die Syntax beim Einfügen aufmerksam. Und
nach erneuter Lektüre der Posts tendiere ich dazu, bei meiner
Meinung zu bleiben.

Hallo Markus,

absolut kein Widerspruch von mir, alles was du schriebst ist richtig.
Mir gings einzig, losgelöst von Gurke, um das Umbenennen zur Laufzeit.
Da gehts mir nicht um Sinn sondern um Machbarkeit, falls man sowas mal bräuchte.

Noch ein schönes Rest WE
Gruß
Reinhard

Hallo Reinhard,

Zu Deiner Antwort: ich bin ja nicht so bewandert, aber ich hab mal gehört, daß es in einigen Programmiersprachen ganz schlimme Dinge gibt. In C und in ABAP bspw. gibt’s Operatorüberladung. Gruselig!

M.E. gibt’s bestimmte Sprachelemente, die man einfach nicht nutzen darf, wenn man sinnvol programmieren will. Ein einfaches Beispiel ist Goto (führt unweigerlich zu Spaghetticode). In der gesprochenen Sprache sagt man ja auch nicht „interiorisieren“, wenn man „verinnerlichen“ meint.

Ich hab den gesamten Post nochmal gelesen. Ich hab den Eindruck, daß das Umbenennen zur Laufzeit scheitert, weil derart viele Subs aufgerufen werden, daß das Control noch gar nicht erzeugt ist. Scheint mir Spaghetticode nicht mit Befehlen, sondern mit Subs zu sein. Langsam droht mir auch Cucumis sativus luxus-Intoleranz :smile:

Gruß

Markus

Hallo Markus,

Zu Deiner Antwort: ich bin ja nicht so bewandert, aber ich hab
mal gehört, daß es in einigen Programmiersprachen ganz
schlimme Dinge gibt. In C und in ABAP bspw. gibt’s
Operatorüberladung. Gruselig!

von Operatorernüberladung in C hab ich gehört, da kann man quasi das Pluszeichen unterschiedlich regieren lassen, jenachdem was es addieren oder zusammenführen soll.
Kann ich nicht einschätzen ob das unnützer Schickschnack ist oder ein gutes Feature.

M.E. gibt’s bestimmte Sprachelemente, die man einfach nicht
nutzen darf, wenn man sinnvol programmieren will. Ein
einfaches Beispiel ist Goto (führt unweigerlich zu
Spaghetticode).

Ja. Code mit vielen Gotos ist übel zu lesen. Sinnvoll ist m.E. „On Error Goto …“ auch wenn das dem EVA-Prinzip widerspricht.
Und, in ganz ganz wenigen Sonderfällen werden m.W. viele Gotos benutzt um den Code sehr schnell zu machen.
Ansonsten hast du Recht.

Langsam droht mir auch
Cucumis sativus luxus-Intoleranz :smile:

So fing’s bei mir auch an, ganz leicht, dann von Nichtreaktion zu Nichtreaktion hat sich das dann langsam gesteigert :frowning:

Gruß
Reinhard

Gruß

Markus

Hallo Reinhard,

ich will jetzt nicht ins Plaudern abgleiten, sondern sinnvoll diskutieren und diesen Post als Anlaß nutzen.

von Operatorernüberladung in C hab ich gehört, da kann man quasi das Pluszeichen unterschiedlich regieren lassen, jenachdem was es addieren oder zusammenführen soll.
Kann ich nicht einschätzen ob das unnützer Schickschnack ist oder ein gutes Feature.

Provokant: Inwiefern kann das ein gutes Feature sein?

Schon bei VBA ist das Pluszeichen doppeldeutig: 1 + 1 ist ebenso gültig wie "eins " + "eins ". Find ich nicht OK. (Ich bin zwar faul und verkette beim Schreiben meine Strings auch mit +, aber am Ende ersetze ich alle + durch &amp:wink:.

Ich bin so trainiert, immer eindeutig zu sein (schult auch das Denken). Deshalb würde ich nie ein + überladen, sondern je nach Anforderung eine Function schreiben, der ich dann die „Summanden“ übergebe.

Gruß

Markus

Hallo Markus und Reinhard,

Also die Operantenüberöadung, welches es auch in .NET gibt, finde ich eine klasse Sache. Sicher fragt sich Otto Normal Verbraucher, was will ich damit? So ein Dummfug etc. Aber je nach Anforderung kann es schon arge Vorteile bringen.

Ein grosser Vorteil ist es zum Bsp. schon einmal das der RückgabeTyp beliebig sein kann.
Man stelle sich nur mal ein Enum vor (Viel, mittel, wenig) Nun überlädst du einfach mal den + Operator und übergibst ihm 2 Zahlen. Und bekommst dann einfach Viel, Mittel oder wenig wieder :wink:
Sicher könnte man das auch mit einer Function machen. Aber warum schwerer machen, als von nöten ist?

Aber gehen wir mal noch einen Schritt weiter!

Ihr wisst ja, das es einmal Referenz und einmal Wertetypen gibt.
Solange es sich in beiden Faellen, gehen wir mal von einem Plus aus, um Wertetypen handelt, so kann nicht gefaehrliches passieren!
Anders ist es dann schon wenn der Operator einen RefernezTypen veraendert!

Nehmen wir mal Eine Structure zur Hand ( Ist ein WerteTyp)

Private MyValue as String

public Shared Operator +(Byval sstring1 as SuperString,ByVal sstring2 as SuperString) as SuperString
String1.Addieren(sstring2)
End Operator

Public Function Addieren(ByVal EinString as SuperString) as SuperString
Return New SuperString(MyValue & EinString.ToString)
End Function

Sub New ( MyString as String)
MyValue=MyString)
End Sub

Public Overrides Function ToString as String
Return MyValue
End Function

Was sie macht sollte Selbsterklärend sein :wink:

So zurueck zum Thema.
Wenn wir nun dies mal mit einem ReferenzTypen probieren, so bekommen wir ja nur die Zeiger geliefert! Wenn nun aber die Daten addieren, so würde keine Kopie angelegt werden, sondern es würde der Orginalwert veraendert werden! Das Ende vom Lied wäre ja das später dann in der ObjectVariablen und im Orginal beides mal die selben Werte drinn stehen würde!

Klingt ein wenig verzwickt, Aber stellt euch folgendes mal vor

Gehen wir von aus Addieren könnte Zahlen addieren, dann würde folgendes Szenario denn was ergeben?

Dim Obj1 as new RefType(10)
Dim Obj2 as new RefType(20)
Dim Obj3 as RefType
Obj3= Obj1+Obj2

Uuups, und genau da geht es schon los!
Nach Aufruf der folgenden 4 Anweisungen, haette Obj3 den Wert 30, was auch so sein soll. Aber Obj1 hat nicht mehr den Wert den er vorher hatte, sondern auch 30! Schlimmer ist es wenn man nun Obj1 ändert, so ändert man auch dementsprechend auch Obj3!

Lässt sich ein wenig schwer erklären, aber ich hoffe mal das ihr versteht was ich meine! Man kann halt die OperantenÜberladung anpassen wie man möchte :wink:

Ein Bsp. faellt mir noch ein, bezogen auf das o.g. Bsp.

Dim MyString as SuperString=new SuperString("Hallo, " + "wie geht es Dir?")

Ist doch eine einfache Schreibweise und tut ihren Dienst :wink:

MfG Alex

Hi Alex,

vielen Dank! Ich hab ja schon geschrieben, daß ich nicht so bewandert bin. Deshalb war mein Horizont auf das, was ich schrieb, eingeschränkt. Jetzt habe ich kapiert, warum Operatorüberladung weiter „angeboten“ wird: es gibt also echten Bedarf. Er ist halt Laien nicht sofort ersichtlich.

Gruß

Markus