小编Oma*_*gra的帖子

“没有提供数组访问的 set 方法”——为什么在 Kotlin 中会发生这种情况?

这是代码。

val stack = Array(inputString.length + 1) { "" }
var current = 0
for ((i, char) in inputString.withIndex()) {
    if (char == '(') {
        current += 1
        continue
    } else if (char == ')') {
        val enclosedString = stack[current]
        stack[current - 1] = stack[current - 1] + enclosedString.reversed()
        current -= 1
        continue
    } else {
        stack[current] +=  char //here's the compile time error 
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息“没有设置方法提供数组访问”。我不明白这个。

如果我将其更改为:

stack[current] = stack[current] + char
Run Code Online (Sandbox Code Playgroud)

一切正常。

为什么会这样?

arrays getter-setter kotlin

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

路径不存在时的SHParseDisplayName

我正在开发一个替代IFileOpenDialogIFileSaveDialog

我几乎可以使用它(至少是IFileOpenDialog),但是当我要返回IShellItem代表新文件名(用户已选择保存在GetResult()方法中)的时,我将无法SHParseDisplayName使用该新文件名。我总是收到一个错误"The system cannot find the file specified"

我将欣赏一些示例或其他解决方案,也许可以解决我的问题。

编辑:

    HRESULT CFileSaveDialogProxy::GetResult( __RPC__deref_out_opt IShellItem **ppsi)
    {
        //return m_Original->GetResult(ppsi);

        WCHAR pszPath[MAX_PATH] = {0};
        HRESULT hr = ERROR_CANCELLED;

        if (m_SelectedFiles.size() > 0)
        {
            QString s = m_SelectedFiles.at(0);
            s.replace(QString("/"),QString("\\"));
            s.toWCharArray(pszPath);

            //PCIDLIST_ABSOLUTE pIdL = ILCreateFromPath(pszPath);
            PIDLIST_ABSOLUTE pIdL = NULL;
            SFGAOF out;
            hr = SHParseDisplayName(pszPath,NULL,&pIdL,SFGAO_FILESYSTEM,&out);
            if (SUCCEEDED(hr))
            {
                hr = SHCreateItemFromIDList(pIdL, IID_PPV_ARGS(ppsi));
            }
        }

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

c++ winapi windows-shell

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

标签 统计

arrays ×1

c++ ×1

getter-setter ×1

kotlin ×1

winapi ×1

windows-shell ×1