小编Mic*_*ent的帖子

局部变量:它们总是在堆栈上吗?

在以下过程中,是否将数组分配到堆栈中?

procedure One:
var
  arr: array[0..1023] of byte;
begin
end;
Run Code Online (Sandbox Code Playgroud)

什么是可以进入堆栈的最大项目?

访问堆栈和堆上的变量之间是否存在速度差异?

delphi

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

获取QTreeView/Model应用程序中给定项的索引

我的Qt桌面应用程序是在editabletreemodel示例应用程序上构建的.在treemodel.cpp中的示例应用程序中,有一个名为getItem()的方法,它将QModelIndex作为参数并返回指向TreeItem的指针.

这是方法的样子:

TreeItem *TreeModel::getItem(const QModelIndex &index) const
{
    if (index.isValid()) {
        TreeItem *item = static_cast<TreeItem*>(index.internalPointer());
        if (item)
            return item;
    }
    return rootItem;
}
Run Code Online (Sandbox Code Playgroud)

我想反过来 - 这是为给定的TreeItem返回一个QModelIndex.

我怎样才能做到这一点?

qt

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

在Java中,是否有相当于Pascal的类型常量

在Delphi/Pascal中,有一种机制,通过该机制,方法中的局部变量可以记住从一个方法调用到下一个方法的值.这是使用类型常量完成的.例如:

procedure blah();
const
  i: integer = 0;
begin
  i := i + 1;

  writeln(i);
end;
Run Code Online (Sandbox Code Playgroud)

每次调用blah()时我都会增加.输出结果如下:

1 2 3 4 5 ...

(每个数字在不同的行上,但编辑器将它们放在同一行上)

Java有同等的东西吗?

java delphi pascal

5
推荐指数
2
解决办法
350
查看次数

使用带有布局的QSplitter

在我的应用程序中,我在顶部有一个树视图,上面有一些与树视图相关的按钮.在这下面我有一个表格视图,再次与一些相关的按钮.我有一个顶部和底部的QVBoxLayout.

请看屏幕显示.

我想做的是能够以QPlitter允许的方式调整顶部和底部的大小.但是...... QSplitter只接受小部件,而不接受布局.

我希望能够拖动屏幕截图中红线所在的位置.

我在C++中创建布局而不是在设计器中.

有没有办法做到这一点?

布局显示我喜欢拆分器的位置

qt

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

Windows资源管理器在复制时重命名文件并找到现有文件

Windows资源管理器在复制时重命名文件并找到现有文件 - 我们是否可以从Delphi代码访问该工具?

在使用时编写重命名目标文件名的代码是相当直接的TFile.Copy(),但如果可用的话,最好使用现有的代码.

delphi winapi

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

QSplitter - 更改可抓取区域的颜色以使其更加明显

使用QSplitter时,有时很难看出是否存在"可抓取"区域以及在哪里点击以获取它.

我想将抓取区域的颜色设置为与背景不同的颜色,以便可见.

这可能吗?

qt

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

QMimeData 编码类型

在我的应用程序中,我正在使用 QTreeView 进行内部拖放。使用本教程,我可以使用 mime 类型“application/vnd.text.list”将其编码到字符串列表中,从而愉快地拖放单个叶子。

然后,我想拖放一个具有一些子节点的树节点,并认为执行此操作的最佳途径是将指针编码为该节点,并在 dropMimeData 方法中迭代所有子节点。

我在 mimeTypes() 方法中声明了一个 mime 类型:

QStringList toResultModel::mimeTypes() const {
    QStringList types;
    types << "text/plain";
    types << "application/vnd.mypointerlist.list";
    return types;
}
Run Code Online (Sandbox Code Playgroud)

并尝试传递相同的字符串列表,但应用程序在 dropMimeData() 方法中崩溃。

看来 mime 类型“application/vnd.text.list”有一些我无法找到的隐藏含义。

我找到了这个源代码: http://fossies.org/linux/tora/src/toresultmodel.cpp,其中作者设置了自定义编码类型“application/vnd.tomodel.list”,并且还使用“application/vnd.tomodel.list”。 int.list”。

使用编码类型有哪些规则?内置类型字符串在哪里定义?我应该使用哪种类型来将指针传递给树节点?

qt

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

阅读应用程序设置最佳实践

在我的桌面应用程序中,我使用QSettings来保存各种应用程序值.例如,主表单位置,最近文档,连接参数以及一些改变应用程序行为方式的内容,例如"在信息对话框中不再显示此消息".

我通常的处理方法是在应用程序启动时将所有设置读入结构或对象,并在应用程序关闭时保存它们.

我还有一个对话框,可以让我编辑设置对象中的许多值,并在关闭对话框时保存它们.

许多窗口和非可视对象都需要设置对象中的值.

做这个的最好方式是什么?

我已经开始将设置对象作为主窗口的成员,但后来我遇到了其他窗口需要访问主窗口成员的问题.

我确实认为我可以在自己的cpp文件中创建设置对象,只需#include需要的地方.但我不确定这是否可能或它的语法.

这种情况的最佳做法是什么?

c++ qt qsettings

3
推荐指数
2
解决办法
1453
查看次数

用于测试位置 x 处存在的字符串的 Delphi 函数

在最近的一个涉及通过串行链接接收字符串的应用程序中,我发现自己编写了如下代码:

if (pos('needle', haystack) = 1) then ...
Run Code Online (Sandbox Code Playgroud)

为了检查特定的子字符串是否位于字符串的开头。

让我惊讶的是 pos 函数对此并不理想,因为它不知道我要在哪个位置查找子字符串。

有没有一个好的功能可以做到这一点?

有没有更通用的函数,例如IsSubStringAt(needle, haystack, position)

我确实考虑过使用这样的东西:

function IsSubstrAt(const needle, haystack: string; position: Integer): Boolean;
var
  ii: integer;
begin
  result := true;
  for ii := 1 to length(needle) de begin
    if (haystack[poition + ii -1] <> needle[ii]) then begin
      result := false;
      break;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

进行一些错误检查。

我希望找到一个现成的答案。

delphi string delphi-6

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

通过Outlook和OLE稳健地发送电子邮件

我正在使用OLE通过Outlook发送电子邮件.我使用的代码是:

procedure SendOutlookMail;
const
  olMailItem = 0;
var
  OKToUse: boolean;
  Outlook: OleVariant;
  vMailItem: variant;
begin
  OKToUse := false;
  try
    Outlook := GetActiveOleObject('Outlook.Application');
    OKToUse := true;
  except
    try
      Outlook := CreateOleObject('Outlook.Application');
      OKToUse := true;
    except
      on e: exception do begin
        ShowMessage(e.Message);
      end;
    end;
  end;

  if VarIsType(Outlook, varDispatch) then
    ShowMessage('Outlook is varDispatch')
  else
    ShowMessage('Outlook is ***NOT*** varDispatch');

  if OKToUse then begin
    vMailItem := Outlook.CreateItem(olMailItem);
    vMailItem.Recipients.Add('mike@example.com');
    vMailItem.Subject := 'What a wonderful test email';
    vMailItem.Body := 'This is a test --> how amazing';
    vMailItem.Send; …
Run Code Online (Sandbox Code Playgroud)

delphi outlook ole

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

标签 统计

delphi ×5

qt ×5

c++ ×1

delphi-6 ×1

java ×1

ole ×1

outlook ×1

pascal ×1

qsettings ×1

string ×1

winapi ×1