小编one*_*dan的帖子

WiX RemoveFolderEx不工作?

我希望WiX在卸载时删除AppData文件夹,所以我查看了RemoveFolderEx并按照一些帖子/指南介绍了如何使其正常工作.据我所知,我的实现应该有效,但事实并非如此.我正在使用以下内容:

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="AppDataFolder">
        <Directory Id="PRIVATEDATAFOLDER" Name="MyApp"/>
    </Directory>
</Directory>
<Property Id="PRIVATEDATAFOLDER">
    <RegistrySearch Root="HKCU" Key="Software\AppCo\MyApp" Type="raw" 
                    Id="APPLICATIONFOLDER_REGSEARCH" Name="PrivateDir" />
</Property>
<DirectoryRef Id='PRIVATEDATAFOLDER'>
    <Component Id="PrivateData" Guid="myGuid">
        <CreateFolder Directory="PRIVATEDATAFOLDER"/>
        <util:RemoveFolderEx Property="PRIVATEDATAFOLDER" On="uninstall"/>
        <RemoveFolder Id="PRIVATEDATAFOLDER" On="uninstall"/>
        <RegistryValue Root="HKCU" Key="Software\AppCo\MyApp" Name="PrivateDir" 
                       Type="string" Value="[PRIVATEDATAFOLDER]" KeyPath="yes"/>
    </Component>
</DirectoryRef>
Run Code Online (Sandbox Code Playgroud)

我有什么问题吗?

编辑:检查详细日志后,我收到错误:

WixRemoveFoldersEx: 错误0x80070057:缺少文件夹属性:PRIVATEDATAFOLDER

installer windows-installer wix

7
推荐指数
1
解决办法
4034
查看次数

语音合成API突出显示单词

目前,我正在制作一个简单的应用程序,使用语音合成API说出文本.我想强调说出来的话(粗体).我目前有一个非常基本的实现,使用'onboundary'事件.但是,我想知道是否有更好/更好的方法,因为我的实现基于一些假设.

var words;
var wordIdx;
var text;
var utterance = new SpeechSynthesisUtterance();
utterance.lang = 'en-UK';
utterance.rate = 1;

window.onload = function(){
    document.getElementById('textarea').innerText = 'This is a text area.  It is used as a simple test to check whether these words are highlighted as they are spoken using the web speech synthesis API (utterance).';

    document.getElementById('playbtn').onclick = function(){
        text    = document.getElementById('textarea').innerText;
        words   = text.split(' ');
        wordIdx = 0;

        utterance.text = text;
        speechSynthesis.speak(utterance);
    }

    utterance.onboundary = function(event){
        var e = document.getElementById('textarea');
        var it …
Run Code Online (Sandbox Code Playgroud)

html javascript speech-synthesis

6
推荐指数
1
解决办法
2383
查看次数

Firebase身份验证JavaScript获得成功

使用以下Firebase电子邮件身份验证代码,您如何知道身份验证是否成功?

firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;

            if (errorCode === 'auth/wrong-password') {
              alert('Wrong password.');
            } else {
              alert(errorMessage);         
            }

            console.log(error);
        });
Run Code Online (Sandbox Code Playgroud)

我知道很容易认识到身份验证是否不成功,但是,我如何知道用户是否能够使用他们提供的凭据登录?似乎没有"成功"登录的回调.我目前有一个登录表单,我想要成功登录导航.

javascript firebase firebase-authentication

6
推荐指数
2
解决办法
7861
查看次数

重载特定读写操作的下标运算符

我目前正在尝试为读取和写入操作重载“[]”运算符。我创建了它们,如下所示:

V operator[] (K key) const; //Read
V& operator[] (K key);      //Write
Run Code Online (Sandbox Code Playgroud)

但是,仅从以下两个调用“写入”:

foo["test"] = "bar"; //Correct, will use 'write'
cout << foo["test"]; //Incorrect, will use 'write'
Run Code Online (Sandbox Code Playgroud)

这是什么原因,是否有可能的解决方案?

同样没有帮助的问题,在这里找到:C++: Overloading the [ ] operator for read and write access

尽管如此,所提供的解决方案并未按预期工作,并且仍然只访问了写重载。

c++ overloading subscript

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

类成员初始化的最佳实践

说我有一个类Foo:

class Foo
{
public:
    Foo();
    ~Foo();

private:
    Bar* mBar;
}
Run Code Online (Sandbox Code Playgroud)

并假设'Bar'是一个有少数成员需要初始化的类.初始化该成员时使用的最佳做法是什么?

示例1:在Foos构造函数中执行所有操作:

Foo::Foo()
{
    mBar = new Bar("some", "required", "members");
}   
Run Code Online (Sandbox Code Playgroud)

示例2:创建单独的初始化函数:

Foo::Foo()
{
}

Foo::Initialize()
{
    mBar = new Bar("some", "required", "members");
}
Run Code Online (Sandbox Code Playgroud)

示例3:两部分初始化,假设'Bar'也有set方法

Foo::Foo
{
    mBar = new Bar();
}

Foo::Initialize()
{
    mBar->SetMembers("some", "required", "members");
}
Run Code Online (Sandbox Code Playgroud)

c++ initialization class

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

Word Online 加载项:跨多个上下文使用对象

我正在尝试制作一个插件,将一个段落分成句子然后说出,并在阅读时突出显示句子。在大多数情况下,我可以完成此操作,但当我想突出显示当前正在阅读的句子时,问题就出现了。

我有一个函数,可以根据用户光标的位置将段落分成句子:

function selectionTest() {
    Word.run(function (context) {
        originalRange = context.document.getSelection();
        var paragraphs = originalRange.paragraphs;

        context.load(paragraphs, 'text');
        context.load(originalRange, 'text');

        return context.sync().then(function () {
            //Range should only be present in a single paragraph, rather than spanning multiple
            if (paragraphs.items.length === 1) {
                var paragraph = paragraphs.items[0];

                var ranges = paragraph.getTextRanges(['.'], true);

                context.load(ranges, 'text');
                return context.sync(ranges);
            }
        }).then(function (sentences) {
            ...
Run Code Online (Sandbox Code Playgroud)

我想在“originalRange”对象上突出显示文本,以便突出显示正确的句子,如下所示:

function highlightSentence(id, colour) {
    Word.run(function (context) {
        var paragraphs = originalRange.paragraphs;

        context.load(paragraphs, 'text');
        context.load(originalRange, 'text');
        ...
Run Code Online (Sandbox Code Playgroud)

但这会产生错误,因为“originalRange”正在多个上下文中使用。有没有办法让我在多个上下文或其他解决方案中使用“originalRange”?

更新:

我尝试在函数中再次获取段落的句子,使用“context.trackedObjects.add”作为原始范围。当尝试从中获取“paragraphs”属性时,这会导致相同的错误。

我意识到我可能需要的只是段落中的句子,而不是使用原始范围再次获取句子。相反,我实施了不同的解决方案: …

javascript ms-office office365 office-js

2
推荐指数
1
解决办法
1929
查看次数

Android从导航抽屉上的ActionLayout获取开关

如何从我的actionLayout(即菜单项)中具体获取开关,以便设置'setOnCheckedChangeListener'事件?

这是我的导航抽屉菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

        <item android:id="@+id/nav_switch"
            app:actionLayout="@layout/action_view_switch"
            android:title="One-to-one mode" />
</menu>
Run Code Online (Sandbox Code Playgroud)

使用action_view_switch actionlayout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Switch
        android:id="@+id/otoSwitch"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

最后,我的导航抽屉:

<android.support.design.widget.NavigationView
        android:id="@+id/nvView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@android:color/white"
        app:menu="@menu/drawer_view"
        app:headerLayout="@layout/nav_header"/>
Run Code Online (Sandbox Code Playgroud)

我了解我可以执行以下操作:

Menu menu = navigationView.getMenu();
MenuItem menuItem = menu.findItem(R.id.nav_switch);
View actionView = MenuItemCompat.getActionView(menuItem);
actionView.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

  }
});
Run Code Online (Sandbox Code Playgroud)

但这并没有给我任何像isChecked这样的状态,例如'setOnCheckedChangeListener'。如何获取切换视图,以便可以设置其侦听器?

java android

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

将通用 RecyclerView Adapter 转换为 Kotlin

目前,我有一个要填充的列表,但列表项可以有不同的数据。我有两个数据类,为了适应 RecyclerView,我有两个不同的 ViewHolder,扩展了一个基本的基本 ViewHolder。由于不同的数据类使用不同的布局,因此需要不同的 ViewHolder。

我已将视图持有者转换为 Kotlin,但是我遇到了适配器问题。

Kotlin 中的基本 ViewHolder:

abstract class BaseViewHolder<T> internal constructor(view: View) : RecyclerView.ViewHolder(view) {
    abstract fun bind(item: T)
}
Run Code Online (Sandbox Code Playgroud)

在 Kotlin 中实现基础 ViewHolder 的 ViewHolder:

class StandardViewHolder(view: View): BaseViewHolder<Standard>(view) {

    private val _eventView      : TextView = view.findViewById(R.id.eventTextView)
    private val _dateView       : TextView = view.findViewById(R.id.dateTextView)

    override fun bind(item: Standard) {
        _eventView.text     = item.event
        _dateView.text      = item.date.toString()
    }
}
Run Code Online (Sandbox Code Playgroud)

在 Java 中,我可以创建一个使用这些 ViewHolders 的适配器:

public class ListAdapter extends RecyclerView.Adapter<BaseViewHolder> {

    private List<Object> _items;
    private Context _context;

    public …
Run Code Online (Sandbox Code Playgroud)

java android kotlin

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

使用C++等效的memmove向右移动数组元素

出于学习目的,我正在创建一个基于具有类似地图功能的数组的容器.每次我插入一个键,我想保持数组的顺序.我已经实现了函数来查找键应该在数组索引中的位置,我目前唯一的问题是有效地移动数组元素.

我有一个简单的循环来做到这一点:

for (size_t i = mSize; i > n; i--)
{
    mCont[i] = mCont[i - 1];
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望可以使用诸如memmove之类的东西来更快地做到这一点 - 但我不确定如何使用它 - 当容器的大小增加时.

谢谢你的时间.

c++ arrays

0
推荐指数
1
解决办法
524
查看次数