我怎样才能制作一个"Surround"类型的Delphi模板?

X-R*_*Ray 5 delphi delphi-2009 live-templates

我正在将我的应用程序迁移到delphi 2009.我的应用程序仍然必须使用大量的AnsiString.在迁移过程中,我发现自己总是转换:

abc := def;
Run Code Online (Sandbox Code Playgroud)

成:

abc := string(def);
Run Code Online (Sandbox Code Playgroud)

要么

abc := TDeviceAnsiString(def);
Run Code Online (Sandbox Code Playgroud)

我知道我应该可以用模板做到这一点,但我发现模板 - 虽然功能强大 - 不是那么容易上班.这是我一直在尝试的:

<?xml version="1.0" encoding="utf-8" ?>

<codetemplate   xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
                version="1.0.0">
    <template name="das" invoke="auto">
        <point name="expr">
            <script language="Delphi">
                InvokeCodeCompletion;
            </script>
            <hint>
                MP: TDeviceAnsiString
            </hint>
            <text>
                True
            </text>
        </point>
        <description>
            MP: TDeviceAnsiString
        </description>
        <author>
            Mike
        </author>
        <code language="Delphi" context="any" delimiter="|"><![CDATA[TDeviceAnsiString(|selected|)|end|]]>
        </code>
    </template>
</codetemplate>
Run Code Online (Sandbox Code Playgroud)

它不会出现在环绕声菜单中,它不会随时激活.我希望能够

abc := **das***[tab]*def;
Run Code Online (Sandbox Code Playgroud)

或者选择"def"并使用"surround"来获得:

abc := TDeviceAnsiString(def);
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

Fra*_*ois 11

这应该这样做:

<?xml version="1.0" encoding="utf-8" ?>
<codetemplate   xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
                version="1.0.0">
    <template name="das" surround="true" invoke="auto">
        <description>
            MP: TDeviceAnsiString
        </description>
        <author>
            Mike rev François
        </author>
        <code language="Delphi" delimiter="|"><![CDATA[TDeviceAnsiString(|end||selected|)]]>
        </code>
    </template>
</codetemplate>
Run Code Online (Sandbox Code Playgroud)

补充:您可以使用LiveTemplates技术信息在Delphi Wiki上找到更多信息