小编Sal*_*dor的帖子

从TThread.DoTerminate设置VCL控制属性

我正在使用该 TThread.DoTerminate方法通知主线程TThread已终止.但是,尽快尝试从DoTerminate内部更改某些控件(按钮)的属性,两个控件都会消失.

当我关闭表单时,我收到此消息

项目ProjectTest.exe引发了异常类EOSError,并显示消息"系统错误".代码:1400.无效的窗口句柄'.

这是一个重现问题的示例应用程序.

type
  TFooThread = class;

  TFormSample = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ProgressBar1: TProgressBar;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FooThread : TFooThread;
    procedure ThreadIsDone;
  public
  end;

  TFooThread = class(TThread)
  private
    FForm : TFormSample;
  protected
    procedure DoTerminate; override;
  public
    procedure Execute; override;
    constructor Create(AForm : TFormSample); reintroduce;
    destructor Destroy; override;
  end;

var
  FormSample: TFormSample;

implementation

{$R *.dfm}

{ TFooThread }

constructor TFooThread.Create(AForm: TFormSample);
begin
  inherited Create(False);
  FreeOnTerminate …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading delphi-10-seattle

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

帮助在Delphi 2007中使用Rijndael算法.Net

我在Delphi 2007.Net工作,在那里我可以找到使用Rijndael算法的一个例子.

再见.

delphi rijndael

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

我如何在Oxygene中声明一个全局方法

我如何使用__Global类在delphi prism中声明一个全局方法

并建议使用全局方法?

不幸的是我没有找到任何例子.

oxygene delphi-prism

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

创建一个具有对特定SCHEMA的完全访问权限的新用户ORACLE

如何在ORACLE中创建一个具有完全访问权限(更改,删除,选择,插入,调试等)的新用户到一个特定的SCHEMA.

sql oracle privileges schema oracle11g

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

在Sql Server 2005中使用UPDATE语句避免死锁的最佳隔离级别

我需要在sql server表上执行un update语句,此表由另一个进程同时使用.因为有时会发生僵局.您是否建议隔离级别以避免或最小化此死锁?

sql sql-server-2005 isolation-level database-deadlocks

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

我如何为来自TStream的Olevariant变量赋值?

我需要从Stream读取并将缓冲区重新放入OleVariant(VarArray)变量中.

var
MemoryStream : TMemoryStream;
Data : OleVariant;
begin
            MemoryStream:=TMemoryStream.Create;
            try
                FuncFill(MemoryStream); //Filling the stream
                MemoryStream.Seek(0,0);
                MemoryStream.Read(Data, MemoryStream.Size);//this line lock tha app, i need allocate the memory for the OleVariant variable?
            finally
             MemoryStream.Free;
            end;

end;
Run Code Online (Sandbox Code Playgroud)

现在的问题是我怎么可以从指定readed值TMemoryStreamolevariant变量?

我正在使用delphi 5.

delphi memory-management stream variant

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

寻找XPath表达式构建器

我正在寻找一个工具或网站,我可以粘贴一个xml,然后选择一个值或属性,然后工具或网站给我必要的XPath表达式来选择该值或属性.有这样的工具吗?

xml xpath

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

如何更改32位TBitmap中特定颜色的alpha值?

当像素包含32位TBitmap的特定颜色时,我需要更改alpha分量的值,我知道要访问位图数据的ScanLine属性,但我无法弄清楚如何更改每个alpha分量像素.

delphi bitmap tbitmap

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

GetTitleBarInfo函数不返回值

我正在GetTitleBarInfo以这种方式使用该功能

procedure TForm1.Button1Click(Sender: TObject);
var
  TitleInfo       : TTitleBarInfo;
begin
  ZeroMemory(@TitleInfo, SizeOf(TitleInfo));
  GetTitleBarInfo(Handle, TitleInfo);
  ShowMessage(IntToStr(TitleInfo.rcTitleBar.Left));
end;
Run Code Online (Sandbox Code Playgroud)

但是没有GetTitleBarInfo返回值(所有值都为零),我缺少什么?

delphi winapi

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

TADOConnection无法在delphi中使用xe2 64位

当我在32位delphi应用程序中运行此代码时,成功建立了与MySql的连接.

{$APPTYPE CONSOLE}

{$R *.res}

uses
  AdoDb,
  ActiveX,
  SysUtils;

Var
  LConn : TADOConnection;
begin
  try
    CoInitialize(nil);
    try
      LConn:=TADOConnection.Create(nil);
      try
        LConn.ConnectionString:='Driver={MySQL ODBC 5.1 Driver};Server=127.0.0.1;Database=mysql;User=*****; Password=*****;Option=3';
        LConn.Connected:=True;
        Writeln('Connected');
      finally
        LConn.Free;
      end;
    finally
      CoUninitialize;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;
end.
Run Code Online (Sandbox Code Playgroud)

但是相同的代码代码因此异常而失败

EOleException:[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序

如果代码编译为64位应用程序.问题是为什么64位应用程序中相同的代码失败?

mysql delphi ado delphi-xe2

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