Eigene Containerfunktion erstellen

    • Super, Roland.
      Genauso hab ich es mir vorgestellt.

      Eine interne Frage bliebe noch.
      Sind dann die fest eingebauten Containernamen
      verboten ? Es könnte ja der ein oder andere
      auf die Idee kommen, seinen Container genau
      so zu benennen (z.B. Create, Move usw.)

      Das würde ja dann miteinander kollidieren.
      Oder hast du das einem extra Bereich gespeichert ?

      Also am besten bei gleichem Namen einen Fehler
      auswerfen.
    • Das hatte ich auch mal angesprochen: Subfunktionen uberschreiben. Man bindet eine Inc ein und ohne den Quellcode zu verändern ersetzen die verbesserten Funktionen die Standardversionen. Wie in meinem Fall die Ftp-Funktionen. Wäre überhaupt fürjeden Befehl interessant.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd) :thumbsup:
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/64TB HDD+256GB Samsung 960 EVO (3.2GB/lesen, 1.9GB/s schreiben :top: )
      XBox Classic 10GB/360S 500GB/One S 2TB/One X Scorpio Edition/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG :-D
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Nexus ROM/XGOSP (Android 8.1, 12/2017)
      http://jacdelad.bplaced.net
    • Mit Create("Container",name) teilt man XProfan lediglich mit, dass es eine Containerfunktion dieses Namens gibt. Würde man hier nun den Namen einer bereits bekannten Containerfunktion verwenden, ist diese Mitteilung nicht schädlich, sondern lediglich überflüssig! Man teilt XProfan dann eben etwas mit, was es schon weiß. ;-)

      Die "fest verdrahteten" Subfunktionen der von Hause aus bekannten Containerfunktionen können nicht überschrieben werden, da die internen Subfunktionen Vorrang vor denen im Programm haben. Der Such-Verlauf für Funktionen ist in etwa folgendermaßen:

      1. Handelt es sich um eine XProfan-Funktion? Wenn ja, diese ausführen. Wenn nein, weiter zu 2.
      1a. Ist es eine Containerfunktion, dann schauen, ob es eine XProfan-Subfunktion ist? Wenn ja dann ausführen, ansonsten ...
      1b. Ist es eine Subfunktion im Quellcode? Wenn ja, diese ausführen. Wenn nein, dann Fehler "Subfunktion nicht gefunden!"
      2. Handelt es sich um eine mit Create definierte Containerfunktion? Wenn ja, dann 2a, wenn nein, dann weiter zu 3.
      2a. Gibt es die Subfunktion im Quellcode? Wenn ja, dann ausführen; wenn nein dann Fehler "Subfunktion nicht gefunden!"
      3. Ist es eine importierte Funktion (aus DLL oder per Inline-Assembler)? Wenn ja dann ausführen, ansonsten weiter zu 4.
      4. Ist es eine Objekt-Methode? Wenn ja dann ausführen, ansonsten weiter zu 5.
      5. Ist es eine mit DEF eingebundene externe Funktion oder eine PROC? Wenn ja, dann ausführen; wenn nein, dann Fehler "Funktion nicht gefunden!"

      Das Überschreiben eingebauter Funktionen und Befehle gefällt mir nicht und wird es nicht geben, denn dann kann ich keinen Quellcode mehr verstehen, ohne nicht in allen Includes oder Units nachgeschaut zu haben, ob der Befehl oder die Funktion nicht irgendwo überschrieben wird. (Und bei Units ohne Quellcode hätte ich da keine Chance.) Denn kein Mensch garantiert mir dass die überschriebene Variante nur eine Verbesserung des Originals ist und nicht etwas völlig Anderes.

      Gruß
      Roland
      Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD / ATI Radeon HD4770 512 MB / Windows 7(32) - XProfan X3
      AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X3


      http://www.xprofan.de
    • Das ist verständlich. Danke für die ausführliche Erklärung.
      Mit wenig Aufwand und ein paar Compilerdirektiven sollte es mir möglich sein, meine MyFTP-Include so herzurichten, dass sie unter X4 eine neue Containerfunktion erzeugt und unter älteren Versionen die Funktion FTP erweitert.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd) :thumbsup:
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/64TB HDD+256GB Samsung 960 EVO (3.2GB/lesen, 1.9GB/s schreiben :top: )
      XBox Classic 10GB/360S 500GB/One S 2TB/One X Scorpio Edition/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG :-D
      Samsung Galaxy S6 edge pearlwhite mit 128GB und Nexus ROM/XGOSP (Android 8.1, 12/2017)
      http://jacdelad.bplaced.net