Nehmen wir folgenden Code:
Code:Public Function getString() As String { Return "Test"; }
Code:#UseInterface Web, Gui; Function main() { Var ref As New CMyScript(8795); Var f As CDelegate = ref.GetDelegate("getString"); Var ret As String = f.Invoke(); ScriptContext.WriteAppLog(ret); } Function CallBack_PageBeforeRender(e As CGuiEventOnPageBeforeRender) { main(); } Function Init(){ main(); //ScriptContext.EnableExtension(); //ScriptContext.RegisterEvent(EGuiEventType.PageBeforeRender, AddressOf CallBack_PageBeforeRender); //ScriptContext.ActivateEvents(); } Init();
Alles funktioniert einwandfrei und der Applog "Test" wird geschrieben.
Entkommentiert man jedoch die Zeilen, die die Extension aktivieren, erhält man folgende Fehlermeldung:
Code:[NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.] bei stne.CScriptContext.get_Current() in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 542. bei stne.Scripting.Types.CScript.GetScript() in d:\source\arakis\dev1\projects\stne\game\Scripting\Objects.cs:Zeile 5843. bei stne.CImpersonationDelegate.Invoke(Object[] args) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 954. bei larne.scripting.Types.CDelegate.Invoke() in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptMethods.cs:Zeile 181. [TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht.] bei System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) bei System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) bei System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) bei larne.scripting.TScriptObjectMemberNative.GetValueInternal(TScriptContext Context, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 2667. bei larne.scripting.TScriptObjectMemberNative.GetValue(TScriptContext Context, TCodeExpressionObjectMember CallExp, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 2656. bei larne.scripting.Expressions.TCodeExpressionObjectMember.Get(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptExpressions.cs:Zeile 376. bei larne.scripting.Commands.TCodeCommandDim.Process(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptCommands.cs:Zeile 150. bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1194. [Exception: Das Script hat einen Laufzeitfehler verursacht. Zeile: 6, Spalte: 7, Token: 'ret', Script: '_'] bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1209. bei larne.scripting.TScriptContext.CallMethod(TScriptObjectMemberCustom mem, TCodeExpressionObjectMember Caller, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1015. bei larne.scripting.TScriptContext.CallMethod(TCodeExpressionObjectMember Caller, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 973. bei larne.scripting.TScriptObjectMemberCustom.GetValue(TScriptContext Context, TCodeExpressionObjectMember CallExp, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1852. bei larne.scripting.Expressions.TCodeExpressionObjectMember.Get(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptExpressions.cs:Zeile 376. bei larne.scripting.Commands.TCodeCommandExpressionCall.Process(TScriptContext Context) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptCommands.cs:Zeile 80. bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1194. [Exception: Das Script hat einen Laufzeitfehler verursacht. Zeile: 6, Spalte: 7, Token: 'ret', Script: '_'] bei larne.scripting.TScriptContext.ExecuteInternal() in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1209. bei larne.scripting.TScriptContext.CallMethod(TScriptObjectMemberCustom mem, TCodeExpressionObjectMember Caller, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1015. bei larne.scripting.TScriptContext.CallMethod(TScriptObjectMemberCustom Mem, Object[] Args, CObject Instance) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 969. bei larne.scripting.TScriptObjectMemberCustom.GetValueInternal(TScriptContext Context, Object obj, Object[] Index) in d:\source\arakis\dev1\projects\shared\larne.scripting\Script.cs:Zeile 1868. bei larne.scripting.Types.CDelegate.Invoke(Object[] args) in d:\source\arakis\dev1\projects\shared\larne.scripting\ScriptMethods.cs:Zeile 185. bei stne.TScriptExtensionItem.CallEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 245. [Exception: Es ist ein Fehler in einer Extension aufgetreten. Extension wurde deaktiviert. Bitte wende dich an den Autor der Extension.] bei stne.TScriptExtensionItem.CallEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 260. bei stne.TScriptExtensionManagerUserItem.CallEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Scripting\Extensions.cs:Zeile 170. bei stne.TUserSession.CallScriptEvent(CGuiEvent e) in d:\source\arakis\dev1\projects\stne\game\Core\UserLib.cs:Zeile 6231. bei stne.TstneGamePage.PrepareRender() in d:\source\arakis\dev1\projects\stne\game\Core\WebControls.cs:Zeile 852. bei stne.wf_Game.Page_Load(Object sender, EventArgs e) in d:\source\arakis\dev1\projects\stne\game\Game.aspx.cs:Zeile 176. bei System.Web.UI.Control.LoadRecursive() bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) Assembly: stne.dll Time: 25.03.2014 17:09:11 Server: DE3 User-ID: 25442 STNE-Version: 1.0.74.1155 Compiled at: 24.03.2014 00:32:27 Compiled from: Arakis
Da es insbesondere bei Extension sehr hilfreich ist Code zentral zu organisieren bitte ich um die Behebung dieses Problems
lg
Elchi


Reply With Quote