你能在TDictionary中使用记录作为Key值吗?我想基于字符串,整数和整数的组合来查找对象.
TUserParKey=record
App:string;
ID:integer;
Nr:integer;
end;
Run Code Online (Sandbox Code Playgroud)
...
var
tmpKey:TUserParKey;
tmpObject:TObject;
begin
tmpObject:= TTObject.Create(1);
tmpKey.App:='1';
tmpKey.ID :=1;
tmpKey.Nr :=1;
DTUserPars.Add(tmpKey,tmpObject)
Run Code Online (Sandbox Code Playgroud)
...
var
tmpKey:TUserParKey;
begin
tmpKey.App:='1';
tmpKey.ID :=1;
tmpKey.Nr :=1;
if not DTUserPars.TryGetValue(tmpKey,Result) then begin
result := TTObject.Create(2);
end;
Run Code Online (Sandbox Code Playgroud)
这返回对象2.
我创建了这个"线程安全"的通用属性,我可以在主线程和后台线程之间使用.我之所以这样做是因为我厌倦了为所有属性和变量创建锁定对象.
TLockedProp<MyType> = class
private
FMyProp:MyType;
PropLock:TObject;
procedure SetMyProp(const Value: MyType);
function GetMyProp: MyType;
published
property Value:MyType read GetMyProp write SetMyProp;
public
Constructor Create;
Destructor Destroy;override;
end;
{ TLockedProp<MyType> }
constructor TLockedProp<MyType>.Create;
begin
inherited;
PropLock:=TObject.create
end;
destructor TLockedProp<MyType>.Destroy;
begin
PropLock.Free;
inherited;
end;
function TLockedProp<MyType>.GetMyProp: MyType;
begin
TMonitor.Enter(PropLock);
result := FMyProp;
TMonitor.Exit(PropLock);
end;
procedure TLockedProp<MyType>.SetMyProp(const Value: MyType);
begin
TMonitor.Enter(PropLock);
FMyProp := Value;
TMonitor.Exit(PropLock);
end;
Run Code Online (Sandbox Code Playgroud)
我有什么问题可以忽略吗?这是使用此属性类的一些代码.告诉我你的想法.
TBgThread=class(TThread)
private
FPaused: TLockedProp<boolean>;
FCount:TLockedProp<integer>;
procedure ChangeCount(pPlusMin:integer);
function GetPaused:boolean;
function GetCount:integer;
public
constructor Create;
destructor Destroy;override; …Run Code Online (Sandbox Code Playgroud) 在我的Datasnap客户端应用程序中,我使用1个TSQLConnection作为我的方法和ProviderConnection.连接丢失时出现问题.TSQLConnection.Connected和TSQLConnection.ConnectionState都没有捕获到它.
当我的TSQL连接打开但我丢失了互联网连接,或者服务器停止.Datasnap客户端应用程序提供了大量错误.(服务器方法或ClientDatasets)
我已经创建了一个函数来管理我的服务器方法的SQL连接.但是当例如关闭通过TDSProviderConnection连接的ClientDataset时会出现更多问题.
问:如何管理客户端应用程序以安全地捕获TSQL连接上的任何断开连接. 问:如何管理停机时间,以及如何处理未保存的客户端状态.
停机后重新连接不是问题.
调用servermethod时:这会抛出异常.
tmpM:=TServerMethodsClient.Create(MYTSQLCONNECTION.dbxconnection,true);
Run Code Online (Sandbox Code Playgroud)
所以我写下一个方法,用虚方法从我的数据模块中获取TSQLCONNECTION.
function TDMForm.DSConnection: TSQLConnection;
var
tmpM:TServerMethodsClient;
begin
result:=nil;
if assigned(MYTSQLCONNECTION) then begin
tmpM:=TServerMethodsClient.Create(MYTSQLCONNECTION.dbxconnection,true);
try
try
tmpM.Ping;
result:=MYTSQLCONNECTION
except
ReconnectForm.ShowModal; // has a reconnect button that tries to reconnect + shutdownbutton
if ReconnectForm.modalresult=mrOK then
result:=MYTSQLCONNECTION
else
MainForm.Close;
end;
finally
tmpm.Free;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我用这种方式写了这个方法,因为只有找出连接是否丢失的方法是通过伪方法,它会抛出相同的错误...然后我可以查询重新连接或关闭程序.
编辑:(我期待某种一般的答案和指导方针,做和不做.不是我的代码的更正,这只是为了表明我现在在做什么.)
我需要在字符串中找到'&'.
SELECT * FROM TABLE WHERE FIELD LIKE ..&...
Run Code Online (Sandbox Code Playgroud)
我们尝试过的事情:
SELECT * FROM TABLE WHERE FIELD LIKE '&&&'
SELECT * FROM TABLE WHERE FIELD LIKE '&\&&'
SELECT * FROM TABLE WHERE FIELD LIKE '&|&&' escape '|'
SELECT * FROM TABLE WHERE FIELD LIKE '&[&]&'
Run Code Online (Sandbox Code Playgroud)
这些都没有给出任何结果SQLServer.好吧有些给所有行,有些没有.
类似的问题不起作用或不够具体.
一些旧的参考Server 2000
我有一个datasnap服务器和客户端.服务器系统的小数分隔符为".".我不知道我的客户会有什么,所以我在我的程序中更改它.
FormatSettings.DecimalSeparator:='.';
FormatSettings.ThousandSeparator:=' ';
Run Code Online (Sandbox Code Playgroud)
现在,当我从客户端打印时,FormatSettings将恢复为Default.
Printer.ActivePrinter.SelectDPI(600,600);
//formatsettings.Decimalseperator is now ","
Run Code Online (Sandbox Code Playgroud)
这是什么行为?这是一个错误吗?
奖金问:如何为客户端和服务器维护相同的格式设置?
我想使用 vue-cli 在 Vue 中使用 webpack 插件,但我不想安装 webpack,因为 Vue 处理这个......
使用这个例子,我尝试使用webpack 中的Environment插件。
module.exports = {
configureWebpack: {
plugins: [
new EnvironmentPlugin([
'HEROKU_RELEASE_VERSION']),
],
},
};
Run Code Online (Sandbox Code Playgroud)
但是因为我们使用 vue-cli,我得到:
未定义环境插件
当我包含 webpack 要求时
const webpack = require('webpack')
module.exports = {
configureWebpack: {
plugins: [
new webpack.EnvironmentPlugin([
'HEROKU_RELEASE_VERSION']),
],
},
};
Run Code Online (Sandbox Code Playgroud)
我得到:
Webpack 应该列在项目的依赖项中。运行 npm install ....
考虑以下因素:我们在64位 Windows 服务器上安装了32位 Datasnap服务器
在embarcadero\rad studio\11.00\redist是2个文件夹:32位和64位,每个都有一个midas.dll.
我们应该把文件放在哪里?
在windows\system32或windows\syswow64中?
是否可以绘制从Bottomleft到Topright或反之亦然的对角线.
我只能从TopLeft到BottomRight画线.
Linetype设置为ltDiagonal.该行始终从TopLeft To BottomRight绘制
如果设置负宽度(底部左边是TopLeft),则不绘制Tline,因为宽度设置为0.
Tline(Control).LineType:=TLineType.ltDiagonal;
Run Code Online (Sandbox Code Playgroud) 如何指定一个TArray<Byte>,array of Byte反之亦然?
TEncoding.UTF8.GetBytes返回一个TArray<Byte>.TIdHashMessageDigest5.HashBytes有一个TIdBytes = array of Byteas参数.
我可以将这些类型分配给对方吗?也许有副本?或者我需要循环?
delphi ×7
generics ×3
datasnap ×2
firemonkey ×2
32bit-64bit ×1
arrays ×1
collections ×1
delphi-xe2 ×1
delphi-xe4 ×1
delphi-xe5 ×1
delphi-xe6 ×1
disconnect ×1
javascript ×1
printing ×1
sql ×1
sql-server ×1
tdictionary ×1
vue.js ×1
webpack ×1