我想在不使用3d零件组件的情况下将TQuery的内容导出到CSV文件(Delphi 7).据我所知,使用Delphi标准组件无法实现这一点.
我的解决方案是将内容保存在CSV格式的StringList中,并将其保存到文件中.
有没有舒服的解决方案?
PS:我不想使用JvCsvDataSet或任何组件.问题是:这可以仅使用Delphi 7或更高标准组件来完成吗?
先感谢您!
我需要获得连续更改的所有值,并在其他"审计"表上发布修改.我是否可以完成此操作,而无需为行中的每个元素编写条件?我知道来自http://www.firebirdfaq.org/faq133/的SQL,它为您提供了验证的所有条件:
select 'if (new.' || rdb$field_name || ' is null and old.' ||
rdb$field_name || ' is not null or new.' || rdb$field_name ||
'is not null and old.' || rdb$field_name || ' is null or new.' ||
rdb$field_name || ' <> old.' || rdb$field_name || ') then'
from rdb$relation_fields
where rdb$relation_name = 'EMPLOYEE';
Run Code Online (Sandbox Code Playgroud)
但这应该写在触发器中.所以,如果我改变一个表,那么我需要修改触发器.
由于FireBird不允许动态增加varchar变量的大小,因此在将其插入文本blob之前,我考虑将所有值转换并连接到一个大的varchar变量.
我使用DCPcrypt和SHA512来散列字符串.
我正在使用Warren Postma的版本https://bitbucket.org/wpostma/dcpcrypt2010
它工作正常.然而,它与德国的变音符号如ä,ö,ü以及其他可能的unicodes相混淆.
我正在使用这样的库:
function TForm1.genhash(str: string): string;
var
Hash : TDCP_sha512;
Digest: array[0..63] of byte;
i: integer;
s: string;
begin
s:= '';
hash := TDCP_sha512.Create(nil);
if hash<>nil then
begin
try
Hash.Init;
Hash.UpdateStr(str);
Hash.Final(Digest);
for i:= 0 to length(Digest)-1 do
s:= s + IntToHex(Digest[i],2);
finally
hash.free;
end;
end;
Result := s;
end;
Run Code Online (Sandbox Code Playgroud)
当我输入字母时,ä我希望输出为:
64868C5784A6004E675BCF405F549369BF607CD3269C0CAC1711E21BA9F40A5ABBF0C7535856E7CF77EA55A072DD04AA89EEA361E95F497AA965309B50587157
我查看了这些网站:http : //hashgenerator.de/ http://passwordsgenerator.net/sha512-hash-generator/
但是我得到:
1A7F725BD18E062020A646D4639F264891368863160A74DF2BFC069C4DADE04E6FA854A2474166EED0914B922A9D8BE0C89858D437DDD7FBCA5C9C89FC07323A
所以我的问题是:我如何使用DCPcrypt库为德语变音符号生成哈希?谢谢
我已经实现了自定义拖动图像没有问题.
我从TDragControlObject继承一个类并覆盖其GetDragImages函数并将位图添加到TDragImageList,使白色像素透明.
它工作,白色像素是不可见的(透明),但剩余的位图不是不透明的.
有没有办法改变dragobject的这种行为?

有没有其他方法来比较2个TGUID元素,除了将它们转换为字符串(guidtostring函数)和评估表达式后,在Delphi 7中?
如何在UTF-8中将WideString(或其他长字符串)转换为字节数组?
今天我遇到了一个'奇怪'的暗示:
覆盖方法xxxx应该匹配祖先yyyy的情况.
解决方案是在祖先中完全声明方法名称....我相信这是自Delphi.Net编译器以来在编译器中休息的东西......
完全按照祖先的方式声明方法使编译器"无声".在Delphi 2006及其他版本中还有其他"区分大小写"的提示/警告?
我的团队中有一位同事在Delphi开发的项目中广泛使用了闭包.个人,我不喜欢这个,因为是使代码难于阅读,我认为,只有当你需要他们倒闭应该被使用.
在另一方面,我读过有人可以向我解释匿名方法吗?和其他相关的链接,这一点,我在考虑,也许我错了,所以我要你给我一些例子时,最好改为使用"老时尚"的方式关闭的(不使用闭包).
我正在运行时创建一个TXMLDocument实例,以加载和解析XML文件.您可以查看以下代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls;
type
Txml = class(TForm)
// XMLDocument1: TXMLDocument;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
xml: Txml;
implementation
{$R *.dfm}
procedure Txml.FormCreate(Sender: TObject);
var i,j:integer;
aNode:IXMLNode;
ws:String;
XMLDocument1:TXMLDocument;
begin
Memo1.Lines.Clear;
XMLDocument1 := TXMLDocument.Create(nil);
try
XMLDocument1.LoadFromFile('C:\a.xml');
XMLDocument1.Active := true;
aNode := XMLDocument1.ChildNodes.First;
while aNode<>nil do
begin
for i := 0 to aNode.ChildNodes.Count-1 do …Run Code Online (Sandbox Code Playgroud) 当数据集已处于插入状态时,如何确定数据感知组件字段是否已被修改?我想知道一个字段是否真的被"修改"了.(我不在乎用户是否在某个字段中输入了某些东西,然后擦除所有内容,这意味着发生了修改).
DataSet.Modified,DataSet.UpdateStatus或ChangeCount都没有解决我的问题.
LE:让我更深入地解释一下.所以,初始数据集看起来像
-------------------------------------
|PK | Field1| Field2| Field3|Field4|
-------------------------------------
| 1 | a | b | c | d |
-------------------------------------
Run Code Online (Sandbox Code Playgroud)
插入后
-------------------------------------
|PK | Field1| Field2| Field3|Field4|
-------------------------------------
| 2 | | | | |
-------------------------------------
| 1 | a | b | c | d |
-------------------------------------
Run Code Online (Sandbox Code Playgroud)
当数据集真正被修改时
-------------------------------------
|PK | Field1| Field2| Field3|Field4|
-------------------------------------
| 2 | avalue| | | |
-------------------------------------
| 1 | a | b | c | …Run Code Online (Sandbox Code Playgroud) delphi ×8
delphi-2006 ×3
audit-trail ×1
closures ×1
compare ×1
csv ×1
dataset ×1
delphi-7 ×1
firebird ×1
firebird2.5 ×1
freepascal ×1
guid ×1
lazarus ×1
sql ×1
tquery ×1
triggers ×1
txmldocument ×1
utf-8 ×1