我正在使用该 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 2007.Net工作,在那里我可以找到使用Rijndael算法的一个例子.
再见.
如何在ORACLE中创建一个具有完全访问权限(更改,删除,选择,插入,调试等)的新用户到一个特定的SCHEMA.
我需要在sql server表上执行un update语句,此表由另一个进程同时使用.因为有时会发生僵局.您是否建议隔离级别以避免或最小化此死锁?
我需要从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值TMemoryStream
的olevariant
变量?
我正在使用delphi 5.
我正在寻找一个工具或网站,我可以粘贴一个xml,然后选择一个值或属性,然后工具或网站给我必要的XPath表达式来选择该值或属性.有这样的工具吗?
当像素包含32位TBitmap的特定颜色时,我需要更改alpha分量的值,我知道要访问位图数据的ScanLine属性,但我无法弄清楚如何更改每个alpha分量像素.
我正在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返回值(所有值都为零),我缺少什么?
当我在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位应用程序中相同的代码失败?