我想澄清一个疑问.在我当前的项目中,我发现有两个TClientDataSet组件.并将一个客户端数据集的属性和事件处理程序分配给另一个客户端数据集,如下所示:
cds2.AfterApplyUpdates := cds1.AfterApplyUpdates;
cds2.AfterCancel := cds1.AfterCancel;
cds2.AfterClose := cds1.AfterClose;
Run Code Online (Sandbox Code Playgroud)
和
cds2.CommandText := cds1.CommandText;
cds2.AutoCalcFields := cds1.AutoCalcFields;
cds2.DisableStringTrim := cds1.DisableStringTrim;
Run Code Online (Sandbox Code Playgroud)
是否需要上述事件处理程序和属性的分配?
如果我们只是将一个客户端数据集分配给另一个,如下所示,这还不够吗?
cds2 := cds1;
Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi 5.
我想知道使用'TFilterGraph'完成avi文件播放的时间.我想自动一个接一个地运行多个avi文件.所以我下载了DSPack并使用了'TFilterGraph'和'TVideoWindow'组件.avi文件视频正常显示.我如何知道avi视频或任何视频已完成播放,以便我可以选择下一个avi或任何其他视频文件播放?
procedure TForm1.Button2Click(Sender: TObject);
begin
videowindow1.FilterGraph:=filtergraph1; //query interfaces to video window
filtergraph1.Active:=true;
filtergraph1.RenderFile('I:\Project Part 1\Clips\More Clips\D.avi');
filtergraph1.Play;
end;
Run Code Online (Sandbox Code Playgroud) 在数据库中有一个名为"MYGROUP"的表.我在GUI中以树格式显示此表数据,如下所示:
Vishal Group
|
|-------Vishal Group1
| |-------Vishal Group1.1
| |-------Vishal Group1.1.1
|
|-------Vishal Group2
| |-------Vishal Group2.1
| |-------Vishal Group2.1.1
|
|-------Vishal Group3
|
|-------Vishal Group4
| |-------Vishal Group4.1
Run Code Online (Sandbox Code Playgroud)
实际上,要求是,我需要访问每个组的最低根,如果相应的组没有在其他特定表中使用,那么我将从相应的表中删除该记录.
我需要获取仅名为"Vishal Group"的主要组的所有详细信息,请参阅两个快照,一个包含整个表数据,另一个快照(具有树格式详细信息的快照)显示预期数据,即我只需要获取这些记录是SQL执行的结果.
我尝试了自我加入(通常我们为MGR和员工列关系做),但没有成功获得属于所有记录基础的"Vishal Group"下的记录.
我添加了一个表DDL和Insert SQL供参考,如下所示.还附上了数据在表格中的外观.
CREATE TABLE MYGROUP
(
PK_GROUP GUID DEFAULT 'newid()' NOT NULL,
DESCRIPTION Varchar(255),
LINKED_TO_GROUP GUID,
PRIMARY KEY (PK_GROUP)
);
COMMIT;
INSERT INTO MYGROUP (PK_GROUP, DESCRIPTION, LINKED_TO_GROUP) VALUES ('{11111111-111-1111-1111-111111111111} ', 'My Items', NULL);
INSERT INTO MYGROUP (PK_GROUP, DESCRIPTION, LINKED_TO_GROUP) VALUES ('{CD1E33D1-1666-49B9-83BE-067687E4DDD6}', 'Vishal Group', '{11111111-111-1111-1111-111111111111}');
INSERT …Run Code Online (Sandbox Code Playgroud) sql firebird recursive-query common-table-expression firebird2.5
我在Delphi中有一个基本的疑问.当我在设计时保留任何组件时,例如TADOConnectuion和按钮点击甚至我写下面的代码然后我没有得到任何错误:
begin
ADOConnection.Free; //No error
ADOConnection.Free; //No error
ADOConnection.Free; //No error
end;
Run Code Online (Sandbox Code Playgroud)
但是如果我在运行时创建相同的对象,则会出现"访问冲突..."错误
begin
ADOConnection := TADOConnection.create(self);
ADOConnection.Free; //No error
ADOConnection.Free; //Getting an "Access Violation..." error
end;
Run Code Online (Sandbox Code Playgroud)
即使我创建如下对象,我也得到相同的错误:
ADOConnection := TADOConnection.create(nil);
Run Code Online (Sandbox Code Playgroud)
只是想知道这种行为背后的原因,即为什么在设计时保留组件时没有错误?
我使用的是Delphi 7.
我是DUnit的新手,我的疑问是我可以使用DUnit编写什么样的测试用例以及如何(这对我来说非常重要).
是否可以为特定的按钮点击事件编写测试用例?因为在那种情况下可能会使用大量代码,其中使用各自的数据库相关过程或函数调用更多单元.在这种情况下,编写测试用例的最佳方法是什么?(如果可能的话,一个例子或推荐对我来说将是一个很大的帮助).
因为,在示例DUnit项目中,我们无法编写整套应用程序代码,因为在某些情况下可能需要创建一些其他形式.
所以,我怀疑这种情况如何编写测试用例,一般来说我们可以使用DUnit编写哪种类型的测试用例,重要的是如何编写?
delphi dunit delphi-7 parameterized-unit-test minimum-coded-unit
我有一个简单的基本问题,我试图使用Insert语句将数据插入到数据库中,其他列值也使用TADOQuery组件.
由于代码已经由某人编写,我想在此处提供一些虚拟示例代码,以便您通过相应的步骤进行说明.
请注意,这是工作的罚款与TQuery组件,因为我更换TQuery与TADOQuery组件,我必须做同样的使用TADOQuery唯一的组件.
相同的代码应该适用于SQL Server以及Oracle数据库.
我尝试插入图像的列的数据类型VarBinary是SQL Server数据库中的类型.
使用TQuery将图像插入表中
使用创建图像TImage.
msBinImgStream := TMemoryStream.Create;
imgCustom := TImage.Create(self);
imgJpg := TJPEGImage.Create;
Run Code Online (Sandbox Code Playgroud)将图像转换为TJpegImage并保存到TMemoryStream.
imgJpg.Assign(imgCustom.Picture.Bitmap);
imgJpg.SaveToStream(msBinImgStream);
Run Code Online (Sandbox Code Playgroud)使用组件的SetBlobdata属性插入数据库TQuery.
sSql := 'INSERT INTO Table_Name(Column1, Column2, Column_Image) VALUES ( ''' + Value1 + ''', ''' + Value2 + ''', :pBlob)';
qryTQuery.SQL.Add(sSQL);
qryTQuery.ParamByName('pBlob').SetBlobData(msBinImgStream.Memory, msBinImgStream.Size);
qryTQuery.ExecSQL;
Run Code Online (Sandbox Code Playgroud)现在做同样的事情TADOQuery:
TMemoryStream.尝试使用图像将图像插入数据库LoadFromStream(stream, ftBlob) …
在Delphi 7中关闭应用程序时,出现以下错误:
“ 0x011c34a6处的指令引用了0x018333f4处的内存。无法读取该内存。”
知道是什么原因导致此问题吗?
delphi ×6
delphi-7 ×3
delphi-2010 ×1
delphi-5 ×1
delphi-xe2 ×1
directshow ×1
dspack ×1
dunit ×1
firebird ×1
firebird2.5 ×1
sql ×1