Ich möchte einzelne Funktionen aus einem Skript in ein anderes Skript übernehmen. Leider klappt das sowohl in der Blockansicht noch in der Javascipt-Ansicht nur manchmal, meistens aber nicht.
Was mache ich falsch oder worauf muss ich achten? Oder funktioniert das z.B. wegen globaler Variablen oder aufgerufenen Funktionen sowieso nicht?
Edit: Inzwischen bin ich etwas klüger: “Kaum macht man alles richig, schon funktioniert es.” Wie ich schon vermutet habe, liegt es an den aufgerufenen Funktionen und den Variablen.
Bevor eine Funktion mit globalen Variablen kopiert werden kann, müssen im Zielskript alle in ihr benutzten Variablen händisch definiert werden. Und diesen muss auch ein Wert zugewiesen werden. Erst dann kann die Funktion selbst kopiert werden.
Eine Funktion, die auf keine globalen Variablen zugreift und keine weiteren Unterfunktionen aufruft, kann problemlos kopiert werden. Unterfunktionen müssen kopiert werden, bevor die rufenden Funktionen kopiert werden. Dabei mache ich das so, dass ich im Zielskript in der Blockansicht erst einmal nur die Funktion definiere. Dann wechsle ich in das Quellskript, gehe in die Javascript-Ansicht und markiere nur den Funktionskörper. Zurück ins Zielskript und auch in die Javascript-Ansicht. Dort suche ich die leere Funktionsdefinition und füge den Funktionskörper ein.
Das ist leider ziemlich umständlich. Falls jemand eine einfachere Methode kennt bin ich für Hinweise dankbar.
Hallo Horst,
kopierst du Script direkt in das Hauptprogramm main.ts, so dass automatisch Blöcke entstehen sollen?
Besser wäre doch, Script in einer eigenen Datei zu speichern. Dann macht MakeCode nicht automatisch Blöcke daraus. Du kannst aber selber Blöcke definieren.