我正在将用Delphi 2007编写的应用程序迁移到Delphi Prism,这是替换TList类的最佳选择吗?
提前致谢.
再见.
是否有一个简单的语句可以在Delphi中给出类似于paramstr()的结果?
我试图在新线程中使用openDialog,但它做了如此奇怪的行为..
如果我把if opendialog.execute然后放在create构造函数中,如下所示:
constructor TChatMemberThread.Create(Name: string);
begin
inherited Create(True);
FName := Name;
FreeOnTerminate := True;
Opendialog := TOpenDialog.create(nil);
if opendialog.execute then
for 0 to opendialog.filescount do
somecodeishere
end;
end;
Run Code Online (Sandbox Code Playgroud)
opendialog正常打开但是当我把它放在线程的执行生成器中时它根本没有打开!!
我是线程的初学者,所以任何人都可以向我解释发生了什么?
提前致谢 .
[编辑]
unit Unit1;
interface
uses
Classes,Dialogs,ComCtrls,SysUtils,DCPcrypt2, DCPmd5;
type
TOpenThread = class(TThread)
private
{ Private declarations }
OpenDlG : TOpenDialog;
LI : TListItem;
Procedure Openit;
Function MD5it(Const filename : string ):String;
protected
procedure Execute; override;
Public
Constructor Create;
Destructor Destroy;Override;
end;
implementation
uses Main;
{ TOpenThread }
Constructor …Run Code Online (Sandbox Code Playgroud) delphi multithreading delphi-2009 fileopendialog topendialog
我已宣布outputBuffer为a Byte并相应地使用它:
TFile.WriteAllBytes(outputPath,outputBuffer);
当我编译我的程序时,Delphi输出:
[DCC错误] StormLib.pas(56):E2010不兼容的类型:'System.TArray [System.Byte]和'Byte'
我的变量使用了错误/过时的数据类型吗?我该怎么做才能让我的程序编译?
先谢谢你!
每次我尝试访问文档的根时,以下代码都会抛出"InvalidPointer"异常XMLDocument.DocumentElement;.
begin
XMLDocument := TXMLDocument.Create(nil); // nil since we don't need an owner
AStream := TStream.Create; // stream for output as string
XMLDocument.loadFromXML(xml);// load string
if NOT (XMLDocument.IsEmptyDoc) then
begin
XMLDocument.Active := true; // actually automatically done by 'loadFromXML'
// get document root
HeadNode := XMLDocument.DocumentElement;
// add <id>-element, set ID as text
idNode := HeadNode.AddChild(XML_ID_PLAIN);
idNode.Text := id;
// ...
end;
end;
Run Code Online (Sandbox Code Playgroud)
传递给的字符串"xml" loadFromXML(string)是有效的XML,但XMLDocument的属性"XML"和"DOMDocument"始终是nil,即使对象本身和它的"IsEmptyDoc"属性都不是.德尔福版本仍然是2007年.
有谁知道是什么原因引起的?提前致谢.
我创建了一个简单的应用程序,其中包含: - 主窗体 - 主菜单 - 操作列表
操作列表由三个操作组成:一个标准 - 退出,两个特定 - 1. 连接到数据库和 2. 计费。
为了防止在连接到数据库之前进行计费操作,我为 billing = false 设置了“启用”属性。
连接动作事件 (OnExecute) 我链接到这个过程:
procedure TForm1.ConnectActionExecute(Sender: TObject);
begin
ConnectAction.Enabled := false;
BillingAction.Enabled := true;
StatusBar1.Panels[0].Text := 'DB Status: Connected';
end;
Run Code Online (Sandbox Code Playgroud)
但是在触发此操作后 ConnectAction 变为禁用状态,但 BillingAction 继续保持禁用状态。请指出我的错在哪里?
我从db获取一个值,当值为NULL时,我收到一个错误
无法将类型(null)的变体转换为类型(整数)
如果我用0填充数据库而不是空(NULL),则错误消失
所以说我有这个
OneSpell.PerCent := FQuery.Recordset.Fields[ DB_FLD_PER_CENT ].Value;
OneSpell.Plus := TCardPlus ( FQuery.Recordset.Fields[ DB_FLD_PLUS ].Value );
OneSpell.Quantity := FQuery.Recordset.Fields[ DB_FLD_QUANTITY ].Value;
Run Code Online (Sandbox Code Playgroud)
有没有办法说,如果值为NULL然后使其为0?或者这必须通过数据库来完成.
FQuery是adoquery和db是访问
我知道我能做到
if .... = null then
onespell.plus := 0
else
.........
Run Code Online (Sandbox Code Playgroud)
但我希望在onepell的每个值的一行中做到这一点
我正在维护一个旧软件(Firebird 2.5 和 C#.net)。最近我们收到了很多“死锁更新与并发更新冲突”的错误。我检查了交易设置。它没有设置等待超时选项:
public override IDbTransaction BeginTransaction(IDbConnection conn)
{
FbTransaction trans = null;
if (conn.State != ConnectionState.Open)
conn.Open();
FbTransactionOptions op = new FbTransactionOptions();
op.TransactionBehavior = FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.RecVersion;
trans = ((FbConnection)conn).BeginTransaction(op);
return trans;
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么我们会超时?难道不应该等待提交一个事务来提交下一个事务吗?
屏幕宽度不足以显示一些文本字段.我不知道如何自动包装它们,我怀疑它可以很容易地完成.
所以,我以为我会做类似的事情
procedure TForm1.FormMouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
var column, row : Integer;
begin
myDbGrid.MouseToCell(X, Y, column, row);
myDbGrid.Hinst := myDbGrid.Cells(column, row); // <==== ooops
end;
Run Code Online (Sandbox Code Playgroud)
或者,也许这样做OnShowHint并获得鼠标坐标并将它们转换为列和行(更高效)
但是,当然,TDbGrid没有Cells.知道如何在用户将鼠标移动到网格的"单元格"上时如何设置控件的提示?
即时通讯使用UNIDAC TUniQuery组件,这是我的SQL:
q_ContribSem2.Close;
q_ContribSem2.SQL.Clear;
q_ContribSem2.SQL.Add('SELECT SUMINISTRO.SUMTITIPOPERSONA, SUMINISTRO.SUMCHRAZONSOCIAL, SUMINISTRO.SUMCHAPELLIDOPATERNO,');
q_ContribSem2.SQL.Add('SUMINISTRO.SUMCHAPELLIDOMATERNO, SUMINISTRO.SUMCHNOMBRES, SUMINISTRO.SUMchCodigo, SUMINISTRO.SUMTITIPOCALLE, ');
q_ContribSem2.SQL.Add('SUMINISTRO.SUMCHNOMBRECALLE, SUMINISTRO.SUMCHNUMEROCALLE, SUMINISTRO.OBSERVACIONESMEDIDOR ');
q_ContribSem2.SQL.Add('FROM SUMINISTRO ');
q_ContribSem2.SQL.Add('WHERE ((((SUMINISTRO.OBSERVACIONESMEDIDOR) Like ' + chr(39) + 'NVO*' + chr(39) + ' Or ');
q_ContribSem2.SQL.Add('(SUMINISTRO.OBSERVACIONESMEDIDOR) Like ' + chr(39) + 'NUEVO*' + chr(39) + ') And');
q_ContribSem2.SQL.Add('((SUMINISTRO.OBSERVACIONESMEDIDOR) Like ' + chr(39) + '*JULIO*' + chr(39) + ' Or ');
q_ContribSem2.SQL.Add(' (SUMINISTRO.OBSERVACIONESMEDIDOR) Like ' + chr(39) + '*AGOSTO*' + chr(39) + ' Or ');
q_ContribSem2.SQL.Add(' (SUMINISTRO.OBSERVACIONESMEDIDOR) Like ' + chr(39) + …Run Code Online (Sandbox Code Playgroud) delphi ×9
delphi-prism ×2
delphi-xe2 ×2
oxygene ×2
ado ×1
deadlock ×1
delphi-2007 ×1
delphi-2009 ×1
delphi-xe ×1
firebird ×1
firebird2.5 ×1
mouseover ×1
ms-access ×1
root ×1
sql ×1
tdbgrid ×1
tlist ×1
topendialog ×1
txmldocument ×1
unidac ×1
vcl ×1
xml ×1