小编r_j*_*r_j的帖子

delphi使用记录作为TDictionary中的键

你能在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.

delphi generics collections tdictionary

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

通用Threadsafe属性

我创建了这个"线程安全"的通用属性,我可以在主线程和后台线程之间使用.我之所以这样做是因为我厌倦了为所有属性和变量创建锁定对象.

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)

delphi generics multithreading thread-safety delphi-xe5

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

通过客户端 - 服务器断开连接管理SQLConnection/Datasnap

在我的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)

我用这种方式写了这个方法,因为只有找出连接是否丢失的方法是通过伪方法,它会抛出相同的错误...然后我可以查询重新连接或关闭程序.

编辑:(我期待某种一般的答案和指导方针,做和不做.不是我的代码的更正,这只是为了表明我现在在做什么.)

delphi sqlconnection datasnap disconnect delphi-xe2

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

使用like语句和通配符在SQL SERVER中查找"&"字符

我需要在字符串中找到'&'.

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.好吧有些给所有行,有些没有.

类似的问题不起作用或不够具体.

在LIKE查询中查找%字符

如何检测字符串是否包含特殊字符?

一些旧的参考Server 2000

http://web.archive.org/web/20150519072547/http://sqlserver2000.databases.aspfaq.com:80/how-do-i-search-for-special-characters-eg-in-sql-server. HTML

sql sql-server sql-server-2008

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

在Firemonkey中打印时,客户端的格式设置正在更改

我有一个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)

这是什么行为?这是一个错误吗?

奖金问:如何为客户端和服务器维护相同的格式设置?

printing delphi firemonkey delphi-xe6

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

在 Vue Client 3 中使用 webpack 插件

我想使用 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 ....

javascript webpack vue.js

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

使用哪个midas.dll?32位datasnap/64bit服务器

考虑以下因素:我们在64位 Windows 服务器上安装了32位 Datasnap服务器

在embarcadero\rad studio\11.00\redist是2个文件夹:32位和64位,每个都有一个midas.dll.

我们应该把文件放在哪里?

在windows\system32或windows\syswow64中?

delphi datasnap 32bit-64bit delphi-xe4

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

使用TLine从BottomLeft到TopRight画一条线

是否可以绘制从Bottomleft到Topright或反之亦然的对角线.

我只能从TopLeft到BottomRight画线.

Linetype设置为ltDiagonal.该行始终从TopLeft To BottomRight绘制

如果设置负宽度(底部左边是TopLeft),则不绘制Tline,因为宽度设置为0.

Tline(Control).LineType:=TLineType.ltDiagonal;
Run Code Online (Sandbox Code Playgroud)

delphi firemonkey

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

将TArray分配给T数组

如何指定一个TArray<Byte>,array of Byte反之亦然?

TEncoding.UTF8.GetBytes返回一个TArray<Byte>.TIdHashMessageDigest5.HashBytes有一个TIdBytes = array of Byteas参数.

我可以将这些类型分配给对方吗?也许有副本?或者我需要循环?

arrays delphi generics

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