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