小编Ari*_*The的帖子

在Delphi Prism中替换TList.

我正在将用Delphi 2007编写的应用程序迁移到Delphi Prism,这是替换TList类的最佳选择吗?

提前致谢.

再见.

delphi oxygene tlist delphi-prism

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

Delphi Prism中的paramstr等价物是什么

是否有一个简单的语句可以在Delphi中给出类似于paramstr()的结果?

delphi oxygene delphi-prism

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

OpenDialog没有出现在Delphi MultiThreaded应用程序中

我试图在新线程中使用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

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

不兼容的类型 - TArray <System.Byte>&Byte

我已宣布outputBuffer为a Byte并相应地使用它:

TFile.WriteAllBytes(outputPath,outputBuffer);

当我编译我的程序时,Delphi输出:

[DCC错误] StormLib.pas(56):E2010不兼容的类型:'System.TArray [System.Byte]和'Byte'

我的变量使用了错误/过时的数据类型吗?我该怎么做才能让我的程序编译?

先谢谢你!

delphi delphi-xe

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

Delphi:尝试访问XMLDocument时的EInvalidPointer

每次我尝试访问文档的根时,以下代码都会抛出"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年.

有谁知道是什么原因引起的?提前致谢.

xml delphi root delphi-2007 txmldocument

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

Delphi XE 2 ActionList - 启用/禁用动作

我创建了一个简单的应用程序,其中包含: - 主窗体 - 主菜单 - 操作列表

操作列表由三个操作组成:一个标准 - 退出,两个特定 - 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 继续保持禁用状态。请指出我的错在哪里?

delphi vcl delphi-xe2

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

如何检查单行中是否为空值

我从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?或者这必须通过数据库来完成.

FQueryadoquery和db是访问

我知道我能做到

if  .... = null then 
  onespell.plus := 0 
else
   .........
Run Code Online (Sandbox Code Playgroud)

但我希望在onepell的每个值的一行中做到这一点

delphi ado delphi-xe2

2
推荐指数
2
解决办法
3万
查看次数

firebird - 死锁更新与并发更新冲突

我正在维护一个旧软件(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)

那么,为什么我们会超时?难道不应该等待提交一个事务来提交下一个事务吗?

firebird deadlock firebird2.5

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

如何在TDbGrid中获取光标下的文本

屏幕宽度不足以显示一些文本字段.我不知道如何自动包装它们,我怀疑它可以很容易地完成.

所以,我以为我会做类似的事情

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.知道如何在用户将鼠标移动到网格的"单元格"上时如何设置控件的提示?

delphi mouseover tdbgrid

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

DELPHI/ACCESS SELECT SQL ERROR

即时通讯使用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)

sql delphi ms-access ms-access-2010 unidac

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