小编Sim*_*mon的帖子

Delphi - 自动完成备忘录

我需要一个具有自动完成功能的备忘录.最终,当用户按下类似于Delphi IDE自动完成的热键(Ctrl-space)时,我希望能够显示自定义自动完成列表.

我有TMS AdvMemo,但说实话,缺少对这个特定组件的帮助.似乎AdvMemo支持自定义自动完成,但我似乎无法找到如何显示列表.

所以,如果有人有任何建议在备忘录上实现自动完成,或者启发我使用AdvMemo,我将不胜感激

delphi autocomplete memo

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

在C#中,如何轻松更改事件处理程序的名称?

在VS2008中,如果我双击事件处理程序,VS将创建一个具有默认名称的默认事件处理程序,例如combobox1_SelectedIndexChanged.

比如说,我现在将combobox1重命名为cbStatus.它仍然具有相同的事件处理程序,所以我现在将其更改为cbStatus_SelectedIndexChanged.

有没有办法,除了旧的事件处理程序之外,VS可以将初始的combobox1_SelectedIndexChange更改为cbStatus_SelectedIndexChange而不是生成新的cbStatus事件处理程序?因为每次我必须将代码剪切并粘贴到新的事件处理程序,然后删除旧的.

另外,如果我已经定义了初始事件处理程序,然后不再需要处理程序,我不能简单地从代码中删除处理程序,因为表单设计者然后抱怨它无法找到原始事件处理程序.有没有办法让VS可以自动从表单设计器中删除事件处理程序的赋值?

我似乎整天都在剪切和粘贴,并从表单设计器代码中删除事件处理程序分配.

c# ide events handlers

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

德尔福 - 在备忘录中获取插入符号的全部字样

如果插入符号直接相邻或备忘录中的单词,我需要能够选择TMemo的整个单词.

考虑以下(其中|是插入符号)

Here is some text| =选择 text

Here is so|me text =选择 some

|Here is some text =选择 Here

Here is some text | =选择''

delphi selection memo

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

VirtualStringTree正确/推荐使用

我一直在使用virtualstringtree一段时间了.我将它用于两个不同的东西,首先是作为选择的普通树,显示数据,其次是作为显示SQL语句输出的网格.

加载到树中的所有数据都来自数据库.对于树示例,我有一个parentId字段来区分层次结构,对于网格示例,我只使用带有每个树的自定义记录的SQL语句(这是唯一的).

我的问题与填充树的首选/最佳方式有关.我从VST文档中读到,您应该使用onInitNode事件和rootnodecount.但是我发现使用AddChild()方法非常相似,即使不鼓励它.

让我展示一些(简化的)示例:

Heirarchy

type PData = ^rData;
    rData = packed record
      ID : Integer;
      ParentID : Integer;
      Text : WideString;
    end;

procedure Loadtree;
 var Node : PVirtualNode;
Data : PData;
 begin
    Q1 := TQuery.Create(Self);
            try
                Q1.SQL.Add('SELECT * FROM Table');
            Q1.Open;
            Q1.Filter := 'ParentID = -1'; //to get the root nodes
            Q1.Filtered := True;
            while not Q1.Eof do
            begin
                    Node := VST.AddChild(nil);
                    Data := VST.GetNodeData(Node);
                    Data.ID := Q1.Fields[fldID].AsInteger;
                    Data.ParentID := Q1.Fields[fldParentID].AsInteger;
                    Data.Text := Q1.Fields[fldText].AsString;
                    //now filter the query again …
Run Code Online (Sandbox Code Playgroud)

delphi performance virtualtreeview tvirtualstringtree

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

将文件复制到我无权访问的网络共享

这是这个问题的延伸

我正在尝试将文件从本地用户的临时文件夹复制到远程文件共享.我无法访问远程文件共享,因此我必须冒充用户.

现在,我可以从远程服务器成功读取文件并在本地复制它,但是我无法将本地文件写入共享,因为它给了我错误:

LOCAL文件的访问被拒绝

(因为我现在冒充另一个用户).

如果你需要一些代码,我可以发布它.

c# security impersonation file-copying

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

使用FileStream.WriteAsync()时,再次调用该方法时会发生什么

我正在录制视频流到磁盘.为此,我使用以下代码:

private async Task SaveToFile(IntPtr data, Int32 size)
{
    if (_FileStream == null) return;
    Byte[] buf = new Byte[size];
    Marshal.Copy(data, buf, 0, size);
    //dont await here - just continue
    _FileStream.WriteAsync(buf, 0, size);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止它似乎没有问题.我只想确认如果在上一次迭代完成之前调用此方法会发生什么.

你会注意到我没有等待WriteAsync()电话.我不确定这是否正确,但我使用的API声明在此方法中将操作保持在最低限度,以便不在API内部阻止回调.这似乎是要纠正的事情,只需将数据传递给流,然后立即返回.

有人可以确认如果最后一个WriteAsync()电话还没完成会发生什么,我WriteAsync()再打电话?或者我应该进行awaitWriteAsync()调用?

编辑:我还没有使用上述方法遇到异常,所以我想我的最后一个问题是在外部DLL回调中使用WriteAsync()时是否有任何影响?DLL是第三方Directshow组件.我无法验证它是如何在内部工作的,但它只是通过回调向我提供数据,我将其保存到文件流中.

c# asynchronous filestream async-await

4
推荐指数
2
解决办法
4035
查看次数

Delphi - 网络上的文件夹同步

我有一个连接到数据库的应用程序,可以在多用户模式下使用,从而多台计算机可以连接同一个数据库服务器来查看和修改数据.其中一个客户总是被指定为"主"客户.该主站还从RS232或UDP输入接收文本信息,并每秒将此数据记录到本地计算机上的文本文件中.

我的问题是其他客户端需要从主客户端访问此数据.我只是想知道最好和最有效的方法来解决这个问题.我正在考虑两种选择:

  1. 编写文件夹同步类,以将远程(主)计算机上的文件夹与本地(客户端)计算机上的文件夹同步.这将是一个线程缓冲文件复制例程.
  2. 实现客户端/服务器,以便主计算机可以将此数据提供给连接和请求数据的任何客户端.主设备将通过TCP/UDP将文件发送到请求客户端.

解决方案必须考虑以下因素:

一个.每秒都会写入日志文件.它必须避免任何潜在的文件锁定问题.

湾 复制例程应仅复制在比客户端计算机上已有的日期更新的文件.

C.尽可能高效

d.所有机器都在局域网上

即 仅需要每10分钟左右执行一次同步.

F.数据量仅为~50MB,但是一旦初始(第一次)同步完成,那么要传输的数据量将仅为~1MB.这将在未来增加

哪种方法更好?有哪些优点/缺点?我也看过我正在考虑使用的快速文件复制帖子.

delphi networking synchronization file-copying

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

处置SQL连接

我有一个SQL类连接到数据库并转发DataTable.我知道完成后必须处理SqlConnection.我知道这可以使用using块来完成,但是将Dispose()调用放在这个类的析构函数中也可以接受吗?

Herre是我的代码:

public class SQLEng
{

    //Connection String Property
    //Must be set to establish a connection to the database
    public string ConnectionString{ get; set; }
    SqlConnection _Conn;

    //Overridden Constructor enforcing the Connection string to be set when created
    public SQLEng(string connectionString)
    {
        ConnectionString = connectionString;
        _Conn = new SqlConnection(connectionString);
    }

    //ensure the SqlConnection is disposed when destructing this object
    public ~SQLEng()
    {
        _Conn.Dispose();
    }

    //various other methods to get datatables etc...
}
Run Code Online (Sandbox Code Playgroud)

基本上我希望有一个类变量SqlConnection,而不是在每个访问数据库的方法中实例化SqlConnection.这听起来有效吗?

c# dispose destructor

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

MySQL GROUP BY 浮点字段

我有一个包含以下列的表:

ID int, DISTANCE float, EVENT Varchar
Run Code Online (Sandbox Code Playgroud)

我想要实现的是选择所有数据,但按事件和距离字段进行分组(即删除相同距离的重复事件)。

我看到的问题是该Distance列是一个浮点数,因此GROUP BY可能不会按预期运行。大多数(我说的是大多数)数据存储到小数点后 3 位,这是我想要分组的标准。

示例数据:

ID、距离、事件

1, 0.001, A
2, 0.002, A
3, 0.002, A
4, 0.002, B
5, 0.003, C
6, 0.0035,C
Run Code Online (Sandbox Code Playgroud)

所以结果看起来像:

1, 0.001, A
2, 0.002, A
4, 0.002, B
5, 0.003, C
Run Code Online (Sandbox Code Playgroud)

mysql group-by floating-accuracy

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

这两个异步实现之间的区别

我正在使用EF的异步方法从数据库中获取数据.大部分时间都很好.我最近遇到了一些ObjectContextDisposed异常,我很好奇为什么我的解决方案有效:

这是我的原始代码ObjectContextDisposed:

public Task<List<string>> GetEventParameterMru(EventParameter parameter, int count = 20)
{
    using (var repo = new ConfigurationRepository())
    {
        return repo.GetEventParameterMRU(_CurrentWorkpack, parameter, count)             
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的新代码,不抛出:

public async Task<List<string>> GetEventParameterMru(EventParameter parameter, int count = 20)
{
    using (var repo = new ConfigurationRepository())
    {
        var result = await repo.GetEventParameterMRU(_CurrentWorkpack, parameter, count);
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释有什么不同,为什么它有效?

仅供参考,在我使用这种方法的所有用法中,我打电话 await GetEventParameterMru()

谢谢

c# asynchronous task-parallel-library async-await

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