This is a migrated thread and some comments may be shown as answers.

Error "Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen"

1 Answer 33 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Matthias Bibo
Top achievements
Rank 1
Matthias Bibo asked on 17 Apr 2012, 02:28 PM

Hello,

I installed the version "Version 2012.1.409.0 SP1" and got following error in one of our assemblies:

I attached the code I wanted to decompile below the error (it is ours):

Current member / type: System.Void Bdl.DialogCrm.Silverlight.UserControls.BDLDockingControl::CreateView(Telerik.Windows.Controls.RadPane,System.String)
 Product version: 2012.1.409.0
Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length
bei System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
bei Telerik.JustDecompiler.Steps.Inflector.Uncapitalize(String word)
bei Telerik.JustDecompiler.Steps.Inflector.Camelize(String lowercaseAndUnderscoredWord)
bei Telerik.JustDecompiler.Steps.RenameVariables.Camelize(String name,  conversion)
bei Telerik.JustDecompiler.Steps.RenameVariables.(TypeReference typeReference)
bei Telerik.JustDecompiler.Steps.RenameVariables.(TypeReference typeReference)
bei Telerik.JustDecompiler.Steps.RenameVariables.(TypeReference typeReference)
bei Telerik.JustDecompiler.Steps.RenameVariables.VisitObjectCreationExpression(ObjectCreationExpression node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Steps.RenameVariables.†(BinaryExpression node)
bei Telerik.JustDecompiler.Steps.RenameVariables.VisitBinaryExpression(BinaryExpression node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitExpressionStatement(ExpressionStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Steps.RenameVariables.Process(DecompilationContext context, BlockStatement block)
bei Telerik.JustDecompiler.Decompiler.DecompilationPipeline.Run(MethodBody body, ILanguage language)
bei Telerik.JustDecompiler.Decompiler.Extensions.(DecompilationPipeline pipeline, ILanguage language, MethodBody body, DecompilationContext& context)
bei Telerik.JustDecompiler.Decompiler.Extensions.Decompile(MethodBody body, ILanguage language, DecompilationContext& context)
bei Telerik.JustDecompiler.Steps.RebuildLambdaExpressions.VisitMethodReferenceExpression(MethodReferenceExpression node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ExpressionCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitObjectCreationExpression(ObjectCreationExpression node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ExpressionCollection node)
bei Telerik.JustDecompiler.Steps.RebuildLambdaExpressions.VisitMethodInvocationExpression(MethodInvocationExpression node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBinaryExpression(BinaryExpression node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitExpressionStatement(ExpressionStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitIfStatement(IfStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitIfStatement(IfStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitIfStatement(IfStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitIfStatement(IfStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitIfStatement(IfStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitIfStatement(IfStatement node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(ICodeNode node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit[TCollection,TElement](TCollection original)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.Visit(StatementCollection node)
bei Telerik.JustDecompiler.Ast.BaseCodeTransformer.VisitBlockStatement(BlockStatement node)
bei Telerik.JustDecompiler.Steps.RebuildLambdaExpressions.Process(DecompilationContext context, BlockStatement body)
bei Telerik.JustDecompiler.Decompiler.DecompilationPipeline.Run(MethodBody body, ILanguage language)
bei Telerik.JustDecompiler.Decompiler.Extensions.(DecompilationPipeline pipeline, ILanguage language, MethodBody body, DecompilationContext& context)
bei Telerik.JustDecompiler.Decompiler.Extensions.Decompile(MethodBody body, ILanguage language, DecompilationContext& context)
bei Telerik.JustDecompiler.Languages.BaseImperativeLanguageWriter.Write(MethodDefinition method)
bei Telerik.JustDecompiler.Languages.BaseLanguageWriter.•ƒ(IMemberDefinition member, Boolean isFirstMember)
bei Telerik.JustDecompiler.Languages.BaseLanguageWriter.(IMemberDefinition x, Boolean y)
bei Telerik.JustDecompiler.Languages.BaseLanguageWriter.(TypeDefinition type, Func`3 writeMember, Boolean writeNewLine, Boolean showCompilerGeneratedMembers, Boolean isMemberDeclaration)

Here is the code:

private void CreateView(RadPane pane, string viewName)
{
    if (pane != null && !string.IsNullOrEmpty(viewName))
    {
        pane.Content = ViewManager.Instance.GetViewComponent(viewName);
 
        viewName = viewName.Contains("|") ? viewName.Substring(0, viewName.IndexOf("|")) : viewName;
 
        if (pane.Content != null)
        {
            pane.Header =  ((IView)pane.Content).DisplayName;
              
            AttachableUserControl child = pane.Content as AttachableUserControl;
            if (child != null)
            {
                ViewDescription viewDesc = ViewManager.Instance.ViewDescriptions.FirstOrDefault(vd => vd.Name == viewName);
                if (viewDesc != null)
                {
                    if (viewDesc.InputViewModelType != null)
                    {
                        if (viewDesc.InputViewModelType.IsAssignableFrom(this.DataContext.GetType()))
                        {                                    
                            child.SetBinding(AttachableUserControl.InputViewModelProperty, new System.Windows.Data.Binding { Source = this.DataContext });
                        }
                        else
                        {
                            var exposedViewModel = (from i in this.DataContext.GetType().GetInterfaces()
                                                    from ea in i.GetCustomAttributes(typeof(ExposesViewModelAttribute), true).Cast<ExposesViewModelAttribute>()
                                                    where viewDesc.InputViewModelType.IsAssignableFrom(ea.ExposedType)
                                                    select ea).FirstOrDefault();
 
                            if (exposedViewModel != null)
                            {
                                PropertyInfo pi = this.DataContext.GetType().GetProperty(exposedViewModel.PropertyName);
 
                                child.SetBinding(AttachableUserControl.InputViewModelProperty, new System.Windows.Data.Binding { Source = pi.GetValue(this.DataContext, new object[0]) });
                            }
                        }
                    }
                }
            }
        }
        else
        {
            if (!pane.Header.ToString().Contains(" nicht geladen!") && !pane.Header.ToString().Contains(" (nicht geladen)"))
            {
                pane.Header = pane.Header + " (nicht geladen)";
            }
        }
 
        pane.TitleTemplate = (DataTemplate)Application.Current.Resources["PaneTitleTemplate"];
        pane.PaneHeaderVisibility = Visibility.Visible;
          
        pane.CanUserClose = false;
        pane.CanUserPin = false;
        pane.CanFloat = false;
        pane.ContextMenuTemplate = null;
 
        pane.DocumentHostTemplate = DefaultPane.DocumentHostTemplate;
    }
}

PS: When I tried to mail the error (with the internal error function) the errortext was cutted after 1949 characters.

Regards,

Matthias

1 Answer, 1 is accepted

Sort by
0
Yordan Dikov
Telerik team
answered on 20 Apr 2012, 12:57 PM
Hi Matthias,

 Thank you for pointing those issues out. We've logged them and we'll see what is causing them. Stay tuned for updates and don't hesitate to contact us about anything around JustDecompile.

Greetings,
Yordan Dikov
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

Tags
General Discussions
Asked by
Matthias Bibo
Top achievements
Rank 1
Answers by
Yordan Dikov
Telerik team
Share this question
or