小编Joh*_*ica的帖子

当应用程序包含很多数据集时,如何整理表单

在Delphi中一个中等复杂的数据库应用程序中,很容易在表单上拥有数十个数据集(表和查询)和相关的数据源.
所有这些都混乱了屏幕.
当您的表单具有pagecontrol每个页面都有自己的数据源集等的情况时,情况会变得更糟.

如果表和数据源是可视控件,那么至少它们只能在适用的选项卡上显示.
我已经考虑过创建一些可以容纳许多数据集和数据源的容器对象,但是从来没有得到它.

我还cnPack添加了选项来隐藏设计器中视图的非可视组件.但是这没有用,因为它很难选择它们.

什么是解决窗体设计器的同时仍然可以选择数据访问组件的解决方案?

(对于我在Delphi 2007和XE2中工作的价值)

delphi design-time dataset

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

XE2的VirtualTreeView组件

我在哪里可以获得Delphi XE2的VirtualTreeView组件?
我可以在这里看到VirtualTreeView的下载链接:http://www.soft-gems.net/index.php? option = com_content&task = view&id = 30& Itemid = 35

但是没有Delphi XE2的软件包,安装程序也不支持XE2.
仅源代码包仅支持Delphi 2007(前Unicode).

delphi virtualtreeview delphi-xe2

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

相当于php的mysql_real_escape_string

我需要一些动态SQL来将大量值插入到数据库中.

INSERT INTO table1 (a,b,c,d) VALUES (1,2,3,'string with possible quotes'),....
Run Code Online (Sandbox Code Playgroud)

因为我想每批插入大约1,000行,所以参数实际上不是一个选项.
在php中我会使用mysql_lib并mysql_real_escape_string防止错误和SQL注入.

如何在Delphi中转义字符串值?

delphi escaping dynamic-sql

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

是否可以修改已加载的资源?

我正在使用TResourceStream类来读取资源,知道我想修改内存中的资源,但上面类的Write方法的文档说:

应用程序不应使用TResourceStream来编写正在运行的应用程序的资源.当应用程序尝试写入应用程序的资源时,Write会覆盖继承的方法以引发EStreamError异常.

由于TResourceStream(WriteBuffer,WriteComponent)的所有其他数据写入方法都调用Write来进行实际写入,因此调用TResourceStream的任何数据写入方法都会引发异常.

问题是,有没有办法使用任何WinApi函数修改正在运行的应用程序中的资源?或者资源是否只读?

delphi resources winapi

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

考试答案确认 - 摊还时间

以下方法op属于具有两个私有整数值实例变量n和counter的类,这两个实例变量在构造函数中初始化为零值,并且随后仅由方法op修改.

public void op()
{
    if(counter<100)
    {
        op1(); //method with O(1) time complexity
        counter++;
    }else {
        op2(); //method with O(n^2) time complexity
        counter = 0;
    }
    n++;
}
Run Code Online (Sandbox Code Playgroud)

假设方法op1具有时间复杂度O(1),并且方法op2具有时间复杂度O(n ^ 2),以下哪个最好地表示方法op的分摊时间复杂度?

A)O(n)

B)O(n log n)

C)O(1)

D)O(n ^ 2)

E)O(n3)

考试的答案是D.我认为从我对摊销时间的理解应该是C,你算一下大部分时间会发生什么.在这种情况下,最坏的情况是O(n ^ 2),但是大多数时候算法将在O(1)中运行.为什么是O(n ^ 2)?

big-o time-complexity

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

我无法使用接口编译类

我试图创建一个实现接口的类,但我得到这些错误:

[dcc32 Error] dl_tPA_MailJournal.pas(10): E2291 Missing implementation of interface method IInterface.QueryInterface
[dcc32 Error] dl_tPA_MailJournal.pas(10): E2291 Missing implementation of interface method IInterface._AddRef
[dcc32 Error] dl_tPA_MailJournal.pas(10): E2291 Missing implementation of interface method IInterface._Release
[dcc32 Fatal Error] MainUnit.pas(8): F2063 Could not compile used unit 'dl_tPA_MailJournal.pas'
Run Code Online (Sandbox Code Playgroud)

代码是:

unit dl_tPA_MailJournal;

interface

uses
  Windows,
  Generics.Collections,
  SysUtils,
  uInterfaces;

type
  TtPA_MailJournal = class(TObject, ITable)
  public
    function GetanQId: integer;
    procedure SetanQId(const Value: integer);
    function GetadDate: TDateTime;
    procedure SetadDate(const Value: TDateTime);

    function toList: TList<string>;

    constructor Create(aId : Integer; aDate : …
Run Code Online (Sandbox Code Playgroud)

delphi interface

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

运行DSharp示例时出现错误信息

我在Delphi XE中安装了所有Dsharp软件包.但是,当我运行该示例时,我总是收到以下错误消息:

例外:修补:ObjAuto.GetTypeSize失败.你在方法中设置了断点吗?

有没有人找到这个错误的解决方法?

在此输入图像描述

delphi delphi-xe

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

如何通过USB访问游戏控制器?

问题
我正在修改我的一个与望远镜通信的应用程序.

GOTO控制器及其键盘是最令人烦恼的问题之一,因为除了鲁莽的糟糕设计之外别无其他.

如果你们中的任何人都记得Sinclair Spectrum你知道我的意思.除了橡胶按键外,当您的眼睛试图适应视野时,用于引导和旋转望远镜的关键键很难找到.

所需要的只是错误的钥匙,你需要再花30分钟左右重新调整望远镜.

解决方法
我的解决方案是一个游戏控制器,如僚机,它可以整齐地放在你的手中,并且很容易找到按钮.此外,没有重置安装的风险.

问题
我的问题是,Delphi如何与游戏控制器进行交互,因为文档中没有提及?否则,当通过USB加密狗连接时,如何访问游戏端口?

delphi usb

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

mysql无法创建外键

这是我的两张桌子

CREATE TABLE IF NOT EXISTS `carslibrary` (   
  `CarID` int(10) unsigned NOT NULL AUTO_INCREMENT,   
  `CarName` varchar(255) NOT NULL,  
  `colorslibrary_ID` int(11) unsigned NOT NULL,   
  PRIMARY KEY (`CarID`),
  KEY `colorslibrary_ID` (`colorslibrary_ID`) 
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

CREATE TABLE IF NOT EXISTS `colorslibrary` (   
  `ColorID` int(11) unsigned NOT NULL AUTO_INCREMENT,   
  `ColorName` varchar(255) NOT NULL,
  PRIMARY KEY (`ColorID`) 
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
Run Code Online (Sandbox Code Playgroud)

我在以下查询中收到错误:

ALTER TABLE  `carslibrary` ADD FOREIGN KEY (  `colorslibrary_ID` )
REFERENCES  `cars2`.`colorslibrary` (`ColorID` );
Run Code Online (Sandbox Code Playgroud)

MySQL说:

#1452 - 无法添加或更新子行:外键约束失败(`cars2`.<结果2解释文件名'#sql-cf8_41a'>,CONSTRAINT`#sql-cf8_41a_ibfk_1` FOREIGN …

mysql

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

如何查看应用程序中是否已存在 Delphi 组件?

如何测试当前应用程序中是否存在某个组件,例如,如果您创建一个名为 radiogroup1 的动态无线电组,如何检查是否已经存在名为 radiogroup1 的组件?

delphi components

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