Hallo GPD (guinea-pig-department) !
Ich schau nochmal wegen der DLL-linkerei
EDIT: etwas doku
Druckbare Version
Hallo GPD (guinea-pig-department) !
Ich schau nochmal wegen der DLL-linkerei
EDIT: etwas doku
Versuchen wir's nochmal.
EDIT: was vergessen:
Bei einem Fehler muß man den IpRef natürlich auch noch wegschmeissen, sonst bleibt er über
Code:If res <> 0 Then
IpState.Text = "ERR"
res = RnIpDrop(IpRef) ' WEGSCHMEISSEN
IpRef = 0
Else
Geht
Netter Gruß
Der erste Schnelltest ist gelaufen.
Wie ich das im Moment überblicke, ist erstmal alles da was man braucht.
Das ganze macht ganz unauffällig seine Arbeit.
Prima.
Ich kann leider z.Z. keine Hardware ranhängen weil ich die Woche bis spät abends Arbeiten muss. Da werde ich mal sehen wie ich das noch hinbekomme.
Die Cal Back Geschichte muss ich mir noch in Ruhe anschauen um da nichts Unsinniges zu erzählen.
Ich werde mich jetzt dran Versuchen das zu integrieren und kann dann berichten.
Ist ja auch immer eine Frage, wie kommt ein Nachwuchsprogrammierer damit klar.
Im Motorrad Rennsport nannte sich das früher Junioren Klasse :-)
Wobei sie mich bei den, von den Franzosen ausgerichteten, 10Km von Berlin in die Klasse der Veteranen eingestuft haben…. Hmmm….
Na ja, lassen wir uns überraschen.
Danke schön PicNick.
Netter Gruß
Tscha, im Sport bis du ab 40 ein Fossil, meistens sogar früher.Zitat:
..Klasse der Veteranen ..
Wenn's hinten weh' tut, soll man vorne aufhören :mrgreen:
Die Doku weiter oben hast du gesehen ?
Überblick:
Jupp, Doku gesehen.
Bin auch konzentriert am lesen.
Die Docu ist Ok, wenn ich nicht so Kopfweh von kriegen würde.
Da sind ein paar Techniken drin, mit denen ich noch nicht so vertraut bin.
Strategie:
Du weist doch, erstmal anmachen und danach die Betriebsanleitung, um nachzusehen ob man es richtig gemacht hat.
Dann einbauen und wenn’s nicht geht den Kundendienst rufen.
Netter Gruß
Aber auch nur dann, wenn's dampft und raucht.Zitat:
..und danach die Betriebsanleitung..
Ich hab's so versucht, daß man es einfach abkupfern kann, ohne gleich in die metaphysischen Tiefen versinken zu müssen.
Wir haben's ja so, daß da eigentlich zwei unabhängige Streams laufen, einer raus, einer rein. Für unsere Dialog-Applikationen ist das meist ok so.
Btw: die mußt nicht alles auf einem connect machen, du kannst auch x-mal connecten, der DLL isses recht, dem Server auch.
(z.B. für Sensoren einen, für Slider etc. einen anderen, dann kriegst du deine Broadcast auch wieder zurück und kannst dich selbst testen)
(Vielleicht ist es auch günstig, für den administrativen Teil einen unabhängigen Stream zu machen. damit wir diese Daten nicht unbedingt ins RnCom µC Protokoll zwängen müssen. Das is aber auch wieder ein anderer Kaffee)
Wie Du das ganz richtig siehst, ich werde das gnadenlos abkupfern, ohne jede Spur von Kreativität, aber dafür mit Erfolg.
Da ich weis, dass Du mir das nachsiehst bin ich dann auch unbekümmert.
Das bedeutet ja nicht, dass ich das nicht grundsätzlich und im Wesendlichen verstehe. Und anwenden kann ich es auf die Art alle mal.
Admin Stream:
Hört sich interessant an die Idee, das könnte mir glatt gefallen.
Das lege mal ins Regal für die langweiligen, dunklen, verschneiten, langen, einsamen und eintönigen Winterabende an denen wir all das tun wozu wir im Sommer keine Zeit hatten.
Das holen wir bestimmt noch mal vor. Grübel, Denk……
So, bevor ich vor lauter lauter nichts mehr auf die Reihe bekomme.
Erstmal noch einen schönen Abend.
Netter Gruß
Nabend,
Admin Kram:
Sind jetzt schon die langen Winterabende?
Ich hätte da gern mal ein Problem.
Da ich gerade die TCP -Remote Sache einbaue.
Brauche ich einen Schlüssel für den Umstand, dass jetzt ein Kommando kommt.
Ich habe mal in den Definitionen nachgelesen und nur das cmd Byte gefunden.
Kannst du da mal was genaues festlegen?
Oder falls ich es überlesen habe mir auf die Sprünge helfen.
Am besten mit einer Beispiels Remote Message.
Die muss ja dann auch ein eindeutiges Ziel haben.
Das Key=Value Prinzip machen wir ja schon, das kann den Befehl Transportieren.
Netter Gruß
Ps. Und den IP Connector Hook immer schön warm und trocken halten :-)
Ich finde, so wie du es machst (CMD = 1 ---> Key-Value sequenz)Zitat:
..und nur das cmd Byte gefunden.
ist das schon brauchbar und sinnvoll. Und eigentlich auch so gedacht. Auf den PC's ist ja ein String-vergleich (select case) kein Problem. Und man kann sich jeden Tag ein neues COmmand ausdenken, ohne daß andere Applikationen zwangsläufig betroffen wären
(wenn's nich sein muß, bin ich kein Freund von binären Command-Codes)
Also, würde sagen, daß ist einfach ausgemacht.
Steht in CMD-Byte eine 1 (0x01 , &H01), dann folgen im Datenfeld
KEY=VALUE,
(trimmed, also keine Spaces irgendwo) Komma als Trennzeichen, wenn mehrere Key-Values folgen.
Frage: Ist KEY bzw Value case-sensitiv ?
Das wüsste ich auch gerne :-)Zitat:
Frage: Ist KEY bzw Value case-sensitiv ?
werde ich ausprobieren.
Im Moment mache ich bei Command, also Key, einen einfachen Stringvergleich und das riecht nach Case sensitiv.
Der Value Anteil wird der verarbeitenden Routine als String übergeben. Die muss sich dann darum kümmern ob ihr das was sagt, was sie da bekommt. Also String to Dezimal oder was auch immer sie da für sich machen muss.
Das mit dem cmd 1 ist dann erstmal gebucht.
Das mit mehreren Key=Value pro Message bin ich mir unschlüssig.
Kannst Du mir da ein paar Für -und –Wieder Argumente zukommen lassen?
Netter Gruß
Habe ich jetzt übersehen.
Die Adressfelder Class und Class ID reichen für die Kommunikation zwischen RN-EV’s nicht aus.
Wollen wir die Identität dieser EV’s auf de Level 1 Ebene abhandeln?
Das wäre dann ein Ident String.
Ich meine die µC’s brauchen vom PC-Gewusel doch nichts mitbekommen?
Wenn Ja brauchen wir dann im cmd Feld die 2 für: „Jetzt kommt die ID“ ?
Wobei die Zahlen im cmd Feld später auch leicht geändert werden könnten.
Ich zitiere mal:
--------------------------------------
' GUI e.V. : Wir haben dzt. eine Identität so eines Vereins, nur ist das halt nur Text.
'Auch ohne spezielle IAM könnt' da noch eine Netz-ID reinquetschen.
'Aber besser wär's, überhaupt zu einem formalen Aufbau zu wechseln, solange wir noch jung sind.
'Denn bald werden auch die Versionen eine interessante Information sein. ("hat der dieses oder jenes schon drauf oder nicht")
'Mir wäre es einfach, wenn wir da ein Key-Value-Format nehmen würden
'Key1=value1 , Key2=value2 , ....;KeyN=valueN
'ID=nnnnn , NAME=aaaaaaaaa , VERS=mmm , DESCRIPT=aaaaa
'(alternative statt "ID" IDC=class, IDI=ident )
'Für den Absender isses so soder so nur ein String, aber ich tu' mir leicht beim zerlegen, und wir können jederzeit
'was hinzufügen, ohne bestehende Applikationen zu tangieren.
'Also:
'KEY ID, IDC, IDI, VERS, NAME, ......
'"="
'value numerisch oder text, je nachdem (nix hexadezimales)
'"," Argument-Seperator oder nix, wenn nix mehr kommt
'Reihenfolge egal, alles optional ( Wenn keine ID, dann hat er eben keine)
'Das "RN" am Anfang müsste dann nicht mehr sein
-----------------------------------------------------------------
ENDE Zitat.
Das würde dann nach meinem Verständnis so aussehen:
ID=RNEV, Name=MARV, VERS=0.1, DESCRIBT=Testfall
Wenn MARV seine Schützlinge steuern will muss er sie ja beim Namen rufen können.
Oder gibt es da noch ganz andere Überlegungen?
Netter Gruß
Heute habe ich mir noch eine Freude gegönnt und meine TCP/IP Remote Fähigkeit in Betrieb genommen. Habe mit einem MARV einen anderen über den Bildschirm gescheucht.
Und ihn auch über TCP/IP Message beendet.
Ich gebe zu das ist nicht so viel, aber genau das richtige für mein kindliches Gemüt.
cmd 1 ist also in Betrieb
Key=Value ebenfalls
Das TCP Netz App—Server—App auch
Das alles aber noch ohne Namentliche Adressierung.
Command Line Start Argumente kann er sowie so schon
Der Key ist übrigens Case sensitiv.
Value im Prinzip auch. Da kommt es aber drauf an wie er weiterverarbeitet wird.
Netter Gruß
Na unbedingt. Stell dir nur vor, du willst deinem Karaoke-Hamster die gewünschten Bild-Parameter setzen oder abfragenZitat:
.. mehreren Key=Value pro Message ...Für -und –Wider ..
Case-sensitiv:
Ich mach es immer so: KEY ist case-sensitiv, wird allerdings in dern RnRegist-Routinen immer standardisiert auf uppercase, getrimmt und ohne leading spaces. (was immer einer auch eintippt).
Bei den Values hab' ich's eigentlich so:
OHNE Quotes wird auch normalisiert.
MIT Quotes gilt es als Text und obliegt dem User (da können dann auch spaces drin sein).
(wobei ist die übliche quote-logik habe, also wenn im Text ein quote sein soll, dann muß man es doppelt schreiben)
Das wird bei unserem Gebrauch aber keine große Rolle spielen, denn irgendwie ist ja alles entweder eh' numerisch oder ein Schlüsselwort.
(Bei meinem Mixer hat sich z.b. diese Frage nie gestellt)
(Auch die quoted-Value Geschichte hat sich eigentlich als irrelevant erwiesen)
Next: Vereins-ID
Ich glaub' beim "Shell" kriegst du ja die Prozess-ID als Wert zurück. Das ist innerhalb eine Maschine das eindeutigste, was wir haben. Und das ist ein simples 16-Bit Wort. Könnten wir nehmen:
ID=nnnn, NAME=seppel,PID=nnnnnn......
(die eigene Pid weiß schließlich jeder)
Mehrere Key=Value:
Ok, überzeugt, machen wir so.
Case-Sensitiv:
Ich Stelle alle Keys auf Großgeschrieben um. Damit müsste alles nahtlos passen?
Bei Den Values dann auch soweit es notwendig ist.
Dann kann die Lib normalisieren und meine Befehlsauswertung bekommt das was sie erwartet.
Deine Erfahrung mit den Quotes können wir gerne übernehmen.
Mir fällt im Moment auch keinen Fall dafür ein.
Da bleibt die Sache an der Stelle erstmal schlicht und übersichtlich.
Netter Gruß
Vereins ID:
Die PID ist ein guter Vorschlag. Das realisiere ich dann erstmal so. Die wandle ich zum String und verwende sie.
Geht ja heute wie’s Brezelbacken.
Netter Gruß
Zum Darüberstreuen:
Code:'NEU ------------------------------------------
Declare Function RnIpEnabRx Lib "rnregist.dll" (ByVal IpRef As Integer) As Integer
Code:
'-------------------------------------------------------------------------------------------------
' Workout with original Thread
'-------------------------------------------------------------------------------------------------
Public Sub IpData(ByVal MyIp As Integer, ByVal Arg As Integer, ByVal Status As Integer)
Dim MsgRef As Integer ' current Message Reference
Dim res As Integer
Dim RespLen As Integer
MsgRef = RnIpMsgGetIn(IpRef)
While MsgRef <> 0
'.....
End While
If IpRef <> 0 Then 'NEU ------------------------------------------
res = RnIpEnabRx(IpRef) 'NEU ------------------------------------------
End If 'NEU ------------------------------------------
End Sub
Das sollte gegen das verhaspeln helfen , hoff' ich
In der ZIP: MARV (Teilprojekt)
und eine neue DLL
Und weiter: Bei Key und sonstigen Schlüsselwörtern bitte Umlaute vermeiden: Also "SAUBAER" statt "SAUBÄR"
Es ist jetzt ein paar mal von einem "Simulanten" gesprochen worden. Ich meine, einen Client, der sich daran hängt und mit einstellbaren Intervallen irgendwelche einstellbaren oder randomized() Werte aussendet, kann man sich ja leicht vorstellen.
Oder geht das in Richtung Cyber-Robby ?
Momentane Aktivitäten:
ich habe MARV gerade mit der Fähigkeit ausgerüstet über einen Schieberegler einstellbar das Netz zu stressen.
Da MARV mehrfach startbar ist kann man auch Netzdialoge Simulieren.
Das ist sehr nützlich beim Implementieren von Remote Eigenschaften.
Also in einiger Hinsicht ist MARV auch zum Simulanten mutiert.
Zweck:
Den Simulanten sehe ich jetzt in erster Linie als Netz Analyse Tool.
Umso schöner der Simulant echten Netz-Verkehr nachmachen kann umso besser ist es natürlich zum testen.
Der Umgang mit einem Dynamischen Plug and Play Netz erfordert auch einen dynamischen Testvorgang.
Wunsch:
Schick wäre natürlich ein etwas geistig luxuriöseres Teil als extra Client.
Ein Ansatz wäre den MARV herzunehmen.
Der ist schon Remotefähig
Er hat schon die Netz Dll implementiert, die habe ich ja nahezu 1:1 nur einklinken müssen.
Da fliegt nur raus was er für den Simulantenjob nicht braucht.
Am MARV soll ja schon das Konzept der „Generic Komponente“ Struktur gewinnen.
Ich sehe hier auch das Ziel eine Generic Komponente sichtbar zu machen die dann so eine Art Plug In erlaubt.
Also Softwarebausteine die man einzeln Pflegen kann.
Wir sind da schon dicht dran und sollten da untereinander auch so homogen wie möglich werden.
Ich ändere auch gerne noch Sachen die dieser Idee im Wege stehen.
Cyber:
Der Simulant ist ansonsten erst etwas später auf Level 2 noch mal Thema.
Dann würde er aber noch ein paar Sachen mehr auf Lager haben, so was wie Recording und Replay und Mapphandling usw. was wir jetzt noch nicht brauchen.
Was auch nicht mehr wirklich Gegenstand des Kern-Projektes ist.
So, großes Lamento fertig :-)
Netter Gruß
Ps.
Ich Mail Dir morgen mal den jetzigen Entwicklungsstand als Diskussionsgrundlage.
Danach schau ich mal wie das funktioniert etwas zum Downloaden in denThread zu stellen.
was ist an dem telegram falsch so das der rn_server
mich nicht erkennt Logon nachricht:
2<00>ID=45,NAME=RNComNetworkLayer,DESCRIPT=Michae l Test
Gruß
mmhh. Sieht ja ok aus.
Ich könnt' mir aber vorstellen, daß durch die diversen Panikaktionen auch ein Prog-Versions-Durcheinander entstanden ist.
Ich (Wir) werden sehen, daß wir den Status quo mit einem einzelnen Zip -File eindeutig festlegen. Sonst kennt man sich sehr schnell überhaupt nicht mehr aus.
Ich hab' selber auf 3 Computern vier verschiedene Versionen von dem RN-Server.
Ich tu' das also und stell' eine konsistentes Set da rein.
wohin stellt du es hier rein ?
Hier im Thread. Solang das alles dermaßen in Bewegung ist, hat es keinen Sinn auf der Homepage.
Also, das wär die aktuelle Version von:
RN_SERVER.exe
RN_CLIENT.exe
RN_ADC.exe
Dabei ist auch eine PNG, wie das aussieht, wenn die alle drei gestartet und verbunden sind. (Mein lokaler Rechner heißt "studio", bei euch wird das anders sein.
RN_SERVER verteilt eigentlich alles zu jedem, wie besprochen, wenn "ID_TO_PATH" nicht gecheckt ist, tut er auch in keiner Richtung irgendwas mappen oder so .
Wenn also irgendwas ist, dann bitte auf DIESEN RnServer bezogen probieren.
Lasttest, stabilität mit der DLL schau ich mir jetzt an.
Sehr schön, damit sind wir dann auf einer Linie soweit das zurzeit möglich ist.
Ich werde einen MARV bereitstellen wenn wir das Netz stabil haben.
Der kann dann einige Befehle mehr.
Und interagiert dann schon übers Netz.
Da soll man dann schon sehen können worauf es hinausläuft.
Er beherrscht jetzt den neuen Netz ID String wie besprochen.
Sieht im Server Tree dann so aus:
Bg352 RN-ID=1,NAME=MARV,PID=448356
Das RN ist noch für den alten Server, das kommt dann weg.
Über die PID könnte man auch schön Adressieren?
Nützt Dir das schon was?
Ich kann jedenfalls ab jetzt in den Apps Nachrichten gezielt rausfischen.
Eigentlich auch gezielt verschicken.
Die landen zwar im Broadcast aber der Empfänger wüsste, dass er gemeint ist.
Vorschläge?
Umlaute vermeiden wir.
Großschreibung ist umgesetzt.
Es gibt tatsächlich einen Fall wo wir möglicherweise Quoting brauchen.
Und zwar wenn ich eine App starte. Kann sein das der Startname Case sensitiv ist.
Ich meine das Windows das eng sieht.
Wie wollen wir das handhaben?
Hier erstmal Pause ;-)
Netter Gruß
Holla, der Server kann ja mehr :-)
Freu freu
Klasse, mit dem Tree !!!
Netter Gruß
Na, alles am werken.
Ich hab momentan die Scheuklappen und teste mich blöde, um das gewonnene Terrain abzusichern.
Wie befürchtet, find' man immer was. Ich möchte jetzt auf jeden Fall mal , daß die ganzen IP-Appl-Kollegen kreuz und quer connecten,-disconnecten, senden (in Massen) können, ohne das da irgendwas seltsames geschieht.
Dann klären wir das mit dem Startnamen. Dem ingeniööör is nix zu schwööör.
Ich rühr' mich !
Mach das in Ruhe.
Ich habe z.B. noch eine Mege andere Sachen die ich fertigstellen will.
Und dafür läuft das Netz gut genug.
Übrigens habe ich gesehen das Deine Clients ja auch schon auf der Höhe der Zeit sind was den Netstring angeht :-)
Netter Gruß
So, GPD ist wieder gefragt (guinea-pig-department)
Da drin ist wieder
RN_SERVER.EXE
RN_CLIENT.EXE
RN_ADC.EXE
RNREGIST.DLL
und ein VB-Projekt IP_DLL
Letzters ist der letzte Stand des Wissens (meines halt :oops: ), PID etc. allerdings einfach reinkodiert, ist erstmal wurst.
Wenn du diese mehrfach startest, kannst du Ping-pong spielen
und wenn du die Servo- und ADC clients anwirfst und den Ip_DLL auf ECHO schaltest, ist der Bär los am Netz, da jede Message dann Kinder und Kindeskinder kriegt. (Irgendwann müßte es aber dann krachen)
IP_DLL ist zu rumbasteln gedacht. Also als Simulaten-Template.
Mit dem Wissen kann ich mich nun wieder MARV zuwenden.
Wenn irgendwas trotzdem schnackelt, bitte Laut geben.
Der erste Probelauf sah sehr gut aus. Wie sagst Du.
Da steppt der Bär.
Ach ne ohne Umlaute BAER ;-)
Das sagt man in Berlin, der Bär ist doch unser Wappentier.
Nur meinen MARV erkennt der Server nicht mehr.
Aber ich werde mal die IP Funktionalität in den MARV transplantieren.
Geht ja schnell, ist ja aufgebaut wie ein Austauschmotor.
Melde mich
Netter Gruß
Heißt das denn nun Berlin oder Bärlin (baerlin) ?
Der neue Motor ist drin.
Und schnurrt wie ein Bienchen.
Dadurch ist jetzt bei mir ein Problem aufgetaucht.
Wenn ein Programm über Messages steuerbar ist.
Muss ich jetzt Maßnahmen ergreifen damit es nicht über selbige abgeschossen werden kann.
Solange MARV handverlesene Befehle verfüttert bekam war alles gut.
Jetzt wo ich künstlich dreckigen Netzverkehr zu Hauf erzeuge verreckt er umgehend :-)
Die reine Netzsache sehe ich erstmal als „Können wir so lassen“
Ich muss mir jetzt einen Filter einfallen lassen der MARV vor verstümmelten oder falschen Befehlen schützt.
Netter Gruß
Ps. Ja das mit dem Namen Bärlin siehst du richtig
Als man in grauer Vorzeit sah, das es in Zukunft Schwierigkeiten mit Umlauten geben wir hat man die Stadt schnell Berlin genannt.
Du siehst, wir waren schon immer vorne weg :-)
I see. Also hieß das ursprünglich "Hubschraubär" und "Sprä" . Wieder was gelernt.
Sag, es gibt eine Möglichkeit ("TEST"), daß sich "DoCommand" selber aufruft. Steckt da was drin ? Müßt ich jetzt rekursiv grübeln *ächz*
Wir müssen schauen, ggf. Selbstmorde zu verhindern (Bridge-Client)Zitat:
über selbige abgeschossen werden kann
Haste natürlich recht.
Wenn ich einer App sage: „Stirb“
Und die macht echo an.
Bin ich drann.
Da brauchen wir eine Adressierung oder irgendwas.
Mach mal bitte Vorschläge. Ich habe da noch nix auf Lager zu.
Netter Gruß
Ps. Man sollte mit Ausländern nie eine Debatte über Umlaute beginnen :-)
TEST:
Ja das ist ein Relikt aus den Anfängen.
Da gehört statt „DoCommand“ natürlich „Test“ hin.
Würde möglicherweise(Ich bin jetzt zu faul das rekursiv durchzudenken) rekursiv sein wenn der Fall gezielt angesprungen werden würde.
Danke für den Wink.
Ich habe das bereinigt.
Netter Gruß
Naja, diese Echo-Geschichte ist natürlich jetzt durch das Testen etwas denaturiert.
Ein reines PING-PONG Echo ist ja in der Praxis was völlig sinnloses.
An sich sind ja dies ganzen "Commands" mehr dialog-orientiert, also request/response. (--->"stirb" <----"röchel"). Man könnte einfach sagen, auf "Commands" gibt's kein Echo, sonder nur eine Antwort.
--> CommandByte = 1 String "CMD=STIRB" request
--> CommandByte = 254 (ack)
od. CommandByte = 255 (nak)
Möglicherweise aber leichter zu konzipieren:
--> CommandByte = 1 String "CMD=STIRB" request
--> CommandByte = 1 String "ACK=STIRB" response
Dann weiß jeder, wie's gemeint ist.
Umlaute: Diskussionen schon gar nicht mir einem Wienär
Soda.
Anbei das gewohnte Set RnRegist.DLL und IP_DLL Project
Ein paar Zeilen sind neu, findest du leicht. Sind auch verständlich, hoff ich
Leider geht das mit Klassenintegration etc. nicht so einfach.
Der VB-Kollege macht sich ins Halstuch mit Marshalled Code, insecure Code und weiss der Teufel was.
Ist erstmal nur lesen.
Vorsicht: dzt. wird nix getrimmt oder adjustiert oder upper-gecased
muss man noch selbst machen, wenn notwendig
Befehlsauswertung:
Feine Sache.
Das läuft tadellos.
Er gibt mir halt noch einen zu langen String mit Leerzeichen.
Darum versteht er den Befehl noch nicht.
Das sind aber Kleinigkeiten. Die mach ich noch zurecht.
Modularisierung:
Was mir nebenher sehr gefällt ist die Modularisierung der Teilprojekte.
Aus Sicht der Juniorenklasse stellt sich das Beispielsweise so dar:
Mal der Idealfall:
Beispielprojekt hernehmen
#Region " Variablen und Lib Declarationen TCP/IP Conector "
#Region " TCP/IP Connector "
Zusammenklappen, markieren kopieren und im eigenen Projekt einfügen.
Jetzt noch die notwendige GroupBox nebst Inhalt kopieren und ebenfalls im eigenen Projekt einfügen.
Ab sofort läuft das.
Idee:
Wenn jetzt nix mehr in den Button Event Subs drin steht außer der Aufruf einer Sub die die eigentliche Funktionalität enthält kann die Funktion auch sofort über die anderen Befehlswege des Programms angesprochen werden.
Das ganze hätte zur Folge, dass die kleinen Beispielprojekte zu Behältern für Referenzbausteine werden.
Der Entwickler des Referenzbausteins könnte sich bei Änderungen unbekümmert austoben und hätte lästige Erklärungen vom Hals wie diese oder jene Änderung eingefügt werden muss.
Weil immer die komplette #Region gewechselt wird.
Was hältst Du von so was?
Netter Gruß
Ps. Mit „Entwickler der Referenzbausteine“ bist Du gemeint. :mrgreen: