小编Ian*_*oyd的帖子

如何将命名空间添加到 msxml DOMDocument?

如何将架构添加到IXMLDOMDocument?

例如,我想生成 XML:

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
   <Relationship Id="rId1" Type="Frob" Target="Grob"/>
</Relationships>
Run Code Online (Sandbox Code Playgroud)

我可以构造 DOMDocument60 对象(伪代码)

DOMDocument60 doc = new DOMDocument60();

IXMLDOMElement relationships = doc.appendChild(doc.createElement("Relationships"));

IXMLDOMElement relationship = relationships.appendChild(doc.createElement("Relationship"));
   relationship.setAttribute("Id", "rId1");
   relationship.setAttribute("Type", "Frob");
   relationship.setAttribute("Target", "Grob");
Run Code Online (Sandbox Code Playgroud)

现在是如何添加命名空间的问题。

如何添加命名空间?

如果我执行明显的解决方案,请在关系节点上设置一个名为xmlns

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
Run Code Online (Sandbox Code Playgroud)

通过类似的东西:

relationships.setAttribute("xmlns", 
      "http://schemas.openxmlformats.org/package/2006/relationships");
Run Code Online (Sandbox Code Playgroud)

文档保存时,导致生成的xml出错:

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
   <Relationship Id="rId1" Type="Frob" Target="Grob" xmlns=""/>
</Relationships>
Run Code Online (Sandbox Code Playgroud)

xmlns在每个其他元素上放置空属性。在这个小测试文档中,它只会错误地应用xmlns到一个元素。在现实世界中,有数十个或数百万个具有空xmlns属性的其他元素。

命名空间URI属性

我尝试设置元素的namespaceURI属性Relationships

relationshps.namespaceURI := "http://schemas.openxmlformats.org/package/2006/relationships"; 
Run Code Online (Sandbox Code Playgroud)

但该属性是只读的

模式属性

文档确实有一个schemas属性,它获取或设置一个 …

winapi msxml ixmldomdocument

4
推荐指数
1
解决办法
2760
查看次数

TVirtualStringTree - 添加对象而不是记录

我有一个 TVirtualStringTree(版本 5.2.2),我需要添加它的节点对象而不是记录。

我已经看过这个问题的答案: Delphi,VirtualStringTree - 类(对象)而不是记录,但它们不起作用。

我想添加到树节点的对象就像

  TNodeElem = class
  public
    LineTimeS, LogMessage, MethName: String;
    LineDate,LineTime: TDateTime;
    LineDateTime: TDateTime;
    ElemType: TLogLineType;//ordinal type
....
  end;
Run Code Online (Sandbox Code Playgroud)

这些节点被添加到 TObjectList 中:

FObjLst.Add(lNode);
Run Code Online (Sandbox Code Playgroud)

并添加到树中:

var iPos: Integer;
    lNode: PVirtualNode;
    ldata: TNodeElem;
begin
  FTreeView.BeginUpdate;
  for iPos := 0 to FObjLst.Count -1 do
  begin
   lNode := FTreeView.AddChild(nil);
   lData := TNodeElem(FObjLst[iPos]);
   FTreeView.getNodeData(lNode)^ := lData;//E2015 Operator not aplicable to this operand type
   FTreeView.ValidateNode(lNode,False);
  end;
  FTreeView.EndUpdate;
end;

procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
    TextType: TVSTTextType; var CellText: …
Run Code Online (Sandbox Code Playgroud)

delphi virtualtreeview delphi-xe2 tvirtualstringtree

4
推荐指数
1
解决办法
844
查看次数

SQL Server 对数据使用加密会导致 SECDoClientHandshake 错误

简洁版本

  • 连接字符串Provider=SQLOLEDB;Data Source=hydrogen;
    User ID=lgilmore;Password=squeegebeckenheim;
    Use Encryption for Data=true;
    Trust Server Certificate=true;

给出错误:

[DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL 安全错误

背景

我正在尝试加密 SQL Server 和 OLEDB 客户端(例如 ADO、SQLOLEDB)之间的通信。

我们从 Microsoft 注意到(除非您自己配置了一个),SQL Server 会自动生成一个自签名证书,用于保护登录过程:

使用加密而不验证

SQL Server 始终对与登录相关的网络数据包进行加密。如果服务器启动时未配置证书,SQL Server 会生成一个自签名证书,用于加密登录数据包。

我们还可以选择一直加密

我们的客户可以要求我们始终使用加密——而不仅仅是在登录过程中。再次,来自微软:

应用程序还可以使用连接字符串关键字或连接属性请求对所有网络流量进行加密。关键词是:

  • "Encrypt":对于 ODBC 和 OLE DB,当将提供程序字符串与IDbInitialize::Initialize一起使用时,或者
  • "Use Encryption for Data"对于 ADO 和 OLE DB,将初始化字符串与IDataInitialize一起使用时。

这个Use Encryption for Data连接字符串关键字意味着我们要使用:

  • 不仅仅在登录过程中使用加密
  • 但也对数据使用加密

我们使用“信任服务器证书”来信任自签名证书

SQL Server 自动生成的自签名证书是自签名的。通常,客户端驱动程序会遍历证书的信任链以查看证书是否有效。使用自动自签名证书连接将失败。

但是还有另一个关键字可以强制客户端接受服务器证书:信任服务器证书

为了在服务器上未配置证书时启用加密,应用程序可以使用"TrustServerCertificate"关键字或其关联的连接属性来保证进行加密。为了即使在未配置服务器证书的情况下也能保证加密,应用程序可能会请求加密和"TrustServerCertificate".

当 …

sql-server encryption sql-server-2008-r2

4
推荐指数
1
解决办法
5529
查看次数

如何拦截发送到我表单上的任何TWinControl的消息?

我面临着一个令人生畏的任务,即WM_GETOBJECT只要将消息发送到TWinControl表单上的任何消息,就必须拦截和处理消息.

  • 每个小组
  • 每个嵌套面板
  • 每个编辑框
  • 每个组合框
  • 每个按钮
  • 每个工具栏
  • 每个日期时间选择器
  • 每一个形象
  • 每个列表视图
  • 每一个树木
  • 每一次胜利控制
  • 在每个表格上

显然,我不希望单独对每个控件进行子类化:

  • 它很难正确完成(当人们想要开始子类化时可能会使用SetWindowSubclass,而当他们完成时会使用RemoveWindowSubclass,并且没有意识到他们刚刚介绍的崩溃)
  • 很难做得很好
  • 它需要单独对每个控件进行子类化,可能是通过子控件迭代函数(如果在创建表单句柄时应用它而导致失败的常见错误,并在表单句柄被销毁时删除它们)

有没有办法参与处理使用SendMessage直接发送到子控件的每个消息

  • 类似于TApplicationEvents.OnMessage如何拦截每个发布的消息
  • 类似于KeyPreview允许表单查看每个发送密钥消息的方式

delphi delphi-xe6

4
推荐指数
1
解决办法
341
查看次数

对于Delphi 5,此FastMM4无效指针异常是否是FastMM中的错误?

在FastMM处于活动状态的Delphi 5中,FreeMem对以下最小可重复代码的调用会触发Invalid Pointer Exception

program Project1;
{$APPTYPE CONSOLE}

uses
  FastMM4,
  SysUtils,
  Windows;

procedure Main;
var
    token: THandle;
    returnLength: Cardinal;
    p: Pointer;
begin
    OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, {out}token);

    //Get the size of the buffer required.
    //It's normally going to be 38 bytes. We'll use 16KB to eliminate the possibility of buffer overrun
//  Windows.GetTokenInformation(token, TokenUser, nil, 0, {var}returnLength);
    p := GetMemory(16384); //GetMemory(returnLength);

    Windows.GetTokenInformation(token, TokenUser, p, 1024, {var}returnLength);

    FreeMem({var}p); //FreeMem is the documented way to free memory allocated …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-5 fastmm

4
推荐指数
1
解决办法
130
查看次数

我可以通过函数组件传递 ref 吗?

-我正在使用功能组件。- 现在我在这里使用 3 个组件,其中一个是父组件,另外 2 个是子组件。- 我需要访问一个子组件方法或状态到另一个子方法。我已经使用CreateRef完成了类组件,但现在我需要使用函数组件,但我在“ref.current”中得到 Null。

export function SideBySideList(props) {
    const ref = React.createRef();

	//this is call inside ListPage after sucess
    function updateRightList(id) {
        ref.current.state.actualSearchedModel.Id = id
        ref.current.fetchDataAndUpdate();
    }
    function itemClicked(id) {
        updateRightList(id);
    }
    return (
        <>
            <div className="col-12 no-padding">
                <div className={props.leftListLayoutClass}>
                    <ListPage
					    updateRightList={updateRightList}
					/>
                </div>
                <div className={props.rightListLayoutClass}>
                    <ListPage
                        ref={ref}
                    />
                </div>
            </div>
        <>
    );
}
Run Code Online (Sandbox Code Playgroud)

dom components function reactjs

4
推荐指数
1
解决办法
9135
查看次数

在代码中构建HTML的技术

html模板作为资源编译到应用程序中.一个片段的HTML模板的样子:

<A href="%PANELLINK%" target="_blank">
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR>
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)

我喜欢这样,因为较大的资源HTML文件包含样式,无怪癖模式等.

但总是如此,他们现在想要在没有链接时应该省略Anchor标签的选项.如果没有标题,则应省略BR标记.


考虑技术Nº1

鉴于我不想在C#代码中构建完整的HTML片段,我考虑过如下:

%ANCHORSTARTTAGPREFIX%<A href="%PANELLINK%" target="_blank">%ANCHORSTARTTAGPOSTFIX%
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%ANCHORENDTAGPREFIX%</A>%ANCHORENDTAGPOSTFIX%CAPTIONPREFIX%<BR>
%CAPTIONTEXT%%CAPTIONPOSTFIX%
Run Code Online (Sandbox Code Playgroud)

我可以使用前缀和后缀将HTML代码转换为:

<!--<A href="%PANELLINK%" target="_blank">-->
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
<!--</A>--><!--<BR>
%CAPTIONTEXT%-->
Run Code Online (Sandbox Code Playgroud)

但这只是荒谬的,加上一个回答者提醒我们它浪费了带宽,并且可能是错误的.


考虑技术Nº2

批发更换标签:

%AnchorStartTag%
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
%AnchorEndTag%%CaptionStuff%
Run Code Online (Sandbox Code Playgroud)

并做一个find-replace来改变

%AnchorStartTag%
Run Code Online (Sandbox Code Playgroud)

"<A href=\"foo\" target=\"blank\""
Run Code Online (Sandbox Code Playgroud)

考虑技术Nº3

我考虑过为重要的HTML元素提供ID:

<A id="anchor" href="%PANELLINK%" target="_blank">
   <IMG border="0" src="%PANELIMAGE%" style="%IMAGESTYLE%">
</A><BR id="captionBreak">
%CAPTIONTEXT%
Run Code Online (Sandbox Code Playgroud)

然后使用HTML DOM解析器以编程方式删除节点.但是没有简单的方法可以访问值得信赖的HTML DOM解析器.如果HTML是xhtml,我将使用各种内置/本机可用的xml DOM解析器.


考虑技术Nº4

到目前为止我实际拥有的是:

private const String htmlEmptyTemplate = 
    @"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD …
Run Code Online (Sandbox Code Playgroud)

html language-agnostic code-generation

3
推荐指数
1
解决办法
587
查看次数

C#Visual Studio:如何让多个开发人员使用引用Office的解决方案?

当我添加对Office COM库的引用时,我去:

  • 参考
  • 添加参考
  • 选择COM选项卡
  • 选择Microsoft Office 12.0对象库

神奇命名的参考出现:

Microsoft.Office.Core

Project.csproj文件显示引用的详细信息:

<COMReference Include="Microsoft.Office.Core">
   <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
   <VersionMajor>2</VersionMajor>
   <VersionMinor>4</VersionMinor>
   <Lcid>0</Lcid>
   <WrapperTool>primary</WrapperTool>
   <Isolated>False</Isolated>
</COMReference>
Run Code Online (Sandbox Code Playgroud)

我将项目检查为源代码管理,现在没有其他人可以构建解决方案; 他们没有Office 12,他们只有Office 11.

另一个人检出.csproj文件,删除对以下内容的引用:

Microsoft Office 12.0 Object Library
Run Code Online (Sandbox Code Playgroud)

并重新添加COM引用:

Microsoft Office 11.0 Object Library
Run Code Online (Sandbox Code Playgroud)

之后,解决方案中出现新参考:

Microsoft.Office.Core
Run Code Online (Sandbox Code Playgroud)

并且Project.csproj文件显示了引用的详细信息:

<COMReference Include="Microsoft.Office.Core">
  <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
  <VersionMajor>2</VersionMajor>
  <VersionMinor>3</VersionMinor>
  <Lcid>0</Lcid>
  <WrapperTool>primary</WrapperTool>
  <Isolated>False</Isolated>
</COMReference>
Run Code Online (Sandbox Code Playgroud)

注意:阅读该问题的读者将理解该问题.它是相同的类型库,但版本2.3而不是版本2.4.

然后将项目检入源代码控制,现在使用Office 2007(以及Office 2000)的开发人员无法构建它,因为Visual Studio无法解析对以下内容的引用:

{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.3\0\primary
Run Code Online (Sandbox Code Playgroud)

我们显然需要一个版本独立的方式来引用Office.

我们如何引用开发人员在其计算机上构建它的Office版本?

我们如何让多个开发人员使用引用Office的解决方案?


注意:此问题与另一个Stackoverflow问题完全相同,但根本不同,如何从Visual Studio C#使用Office?

该问题涉及尝试从Visual Studio使用Office的所有问题.这个问题只关注一个具体问题.

com automation interop ms-office

3
推荐指数
1
解决办法
1276
查看次数

在Vista下查找MDI窗口的玻璃

我正在VS 2008中用C#开发一个winforms MDI应用程序.我注意到MDI表单在Vista下没有玻璃外观.

这是设计的吗?是否有一种简单的方法可以让玻璃看起来像这些窗户?

c# mdi aero windows-vista aero-glass

3
推荐指数
1
解决办法
1059
查看次数

Delphi:如何知道TEdit何时改变大小?

我需要在更改大小时更新编辑框周围的项目.

TEdit没有OnResize事件.

编辑框可以在不同时间调整大小,例如:

  • 在代码中改变宽度/高度
  • 表格缩放为DPI缩放
  • 字体改变了

我相信其他人我不知道.

我需要一个单独的事件来知道编辑框何时改变了它的大小.是否有Windows消息我可以为编辑框子类化并抓取?

windows delphi events resize editbox

3
推荐指数
1
解决办法
1397
查看次数