<div dir="ltr"><div dir="ltr"><div>Hello,<br><br>I successfully managed to run the WriterDemo example and to connect to the Libre Office from my application. <br>The differences between the .Net Core API and the API used for .Net Framework are astonishing. <br><br>Could you tell me if there is an example of how to get Libre Office version if .Net? I have code which worked with the .net framework, but now the code, listed below, does not work:<br><br><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>   Any[] VerRequest = new Any[1];</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div> VerRequest[0] = new Any(typeof(PropertyValue), new PropertyValue()</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>      {</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                 Name = "nodepath",</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                    Value = new Any("/org.openoffice.Setup/Product")</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>   });</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>    XMultiServiceFactory ConfProvider = m_HnComponentContext.getServiceManager().query<XMultiServiceFactory>();</div><div>        if (ConfProvider != null)</div><div>        {</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                 XNameAccess ConfAccess = (XNameAccess)ConfProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", VerRequest);</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                 if (ConfAccess != null)</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                 {</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                                return ConfAccess.getByName("ooSetupVersion").Value as string;</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                    }</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>    }</div></blockquote><div><br>Besides, there are another couple of issues regarding the SDK. The first is an error while setting up a proprety of a font. The code (modification of the WriterDemo.cs example) is shown below:<br><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>  // Create a cursor object</div><div>        XTextCursor cursor = simpleText.createTextCursor();</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>    cursor.query<XPropertySet>().setPropertyValue("CharWeight", new Any(((float)200)));</div><div>      cursor.query<XPropertySet>().setPropertyValue("CharEscapement", new Any((Int16)0));</div><div>      cursor.query<XPropertySet>().setPropertyValue("CharEscapementHeight", new Any((Byte)100));</div></blockquote><div><br><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>   // Inserting some Text</div><div>   text.insertString(cursor, "The first line in the newly created text document.\n", false);</div></blockquote><div><br>The 'Object reference not set to an instance of an object.' occurs on the cursor.query<XPropertySet>().setPropertyValue("CharEscapementHeight", new Any((Byte)100)); line.<br><br>The second issue occures while setting up with of table colimns. The code (modification of the same example) is shown below:<br><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>void SetColumnWidth(XTextTable textTable,int ColNum, short Width)<br>   {<br></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>               Any obj = textTable.query<XPropertySet>().getPropertyValue("TableColumnSeparators");</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>            TableColumnSeparator[] tcs = (TableColumnSeparator[])(obj.Value);</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>               short Delta = 0;</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                if (tcs != null)</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                {</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                        if (tcs.Length - 1 >= ColNum)</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                       {</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                               if (ColNum == 0)</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                              {</div></blockquote></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                      Delta = (short)(Width - tcs[ColNum].Position);</div></blockquote></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                       tcs[ColNum].Position = Width;</div></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                             }</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                             else</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                          {</div></blockquote></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                      Delta = (short)(Width - (tcs[ColNum].Position - tcs[ColNum].Position));</div></blockquote></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                                      tcs[ColNum].Position = (short)(Width + tcs[ColNum - 1].Position);</div></blockquote></blockquote></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                         }</div></blockquote></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                  }</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><br></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                   Any val = new Any(typeof(com.sun.star.text.TableColumnSeparator[]), tcs);</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>                      textTable.query<XPropertySet>().setPropertyValue("TableColumnSeparators", val);</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>             }</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>    }<br></div></blockquote><div>If the function is called in \sdk\examples\dotnet\WriterDemo\csharp\WriterDemo.cs, like listed below:<br><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>     // Get first row</div><div> XTableRows tableRows = textTable.getRows();</div><div>      Any rowAny = tableRows.query<XIndexAccess>().getByIndex(0);</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>      SetColumnWidth(textTable, 1, 200);</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>     // Set a different background color for the first row</div><div>    XPropertySet firstRowPropertySet = rowAny.cast<XPropertySet>();</div><div>    firstRowPropertySet.setPropertyValue("BackTransparent", new Any(false));</div></blockquote><div><br><br>It gives an access violation error ("Attempted to read or write protected memory. This is often an indication that other memory is corrupt") on the line<br><br>  textTable.query<XPropertySet>().setPropertyValue("TableColumnSeparators", val);<br><br>When I tried to get the columns of the table via the code below (the code is inserted in the  WriterDemo.cs  example too):<br><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>        // Set the table background color</div><div>        XPropertySet tablePropertySet = textTableI.query<XPropertySet>();</div><div>  tablePropertySet.setPropertyValue("BackTransparent", new Any(false));</div><div>  tablePropertySet.setPropertyValue("BackColor", new Any(0xCCCCFF));</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>   XTableColumns tableCols = textTable.getColumns();</div><div>        Any colAny = tableCols.query<XIndexAccess>().getByIndex(1);</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>      // Get first row</div><div> XTableRows tableRows = textTable.getRows();</div><div>      Any rowAny = tableRows.query<XIndexAccess>().getByIndex(0);</div></blockquote><div><br><br>However, the   tableCols.query<XIndexAccess>().getByIndex(1) line give another error: <br><br>        Exception thrown: 'System.ArgumentException' in net_basetypes.dll<br>     An unhandled exception of type 'System.ArgumentException' occurred in net_basetypes.dll<br>       Value of Any can only be null if Type is void. Perhaps you want Any.VOID?<br><br><br>Could you tell me what is a proper way to change the table column width using the .Net Core SDK?</div></div>
</div>