小编Gui*_*ens的帖子

在Delphi中使用接口的优缺点是什么?

我已经使用Delphi类了一段时间但从未真正使用过接口.我已经读过一些关于它们的内容,但想了解更多.

我想知道在Delphi中使用接口时遇到的关于编码,性能,可维护性,代码清晰度,层分离以及一般来说您可以想到的任何方面的优缺点.

谢谢和最好的问候

delphi interface

28
推荐指数
5
解决办法
4646
查看次数

Delphi XE2 TLabel glowsize导致屏幕左上角出现图形问题

自从将应用程序从XE移植到XE2后,我注意到一个奇怪的错误,只需在ide中打开表单或运行应用程序,屏幕左上角(表单外)就会绘制一个白色方框,远离鼠标或窗户.我将其跟踪到TLabel,只需在表单上删除一个并将Glowsize设置为0就会导致问题.

我重新安装并更新到最后的XE2 update3,问题仍然存在.有人知道发生了什么事吗?

例1

例2

在此输入图像描述

delphi tlabel delphi-xe2

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

Delphi-Mocks:在构造函数中使用参数模拟一个类

我开始使用Delphi-Mocks框架,并且在模拟构造函数中具有参数的类时遇到问题.TMock的类功能"Create"不允许参数.如果尝试创建TFoo.Create的模拟实例(Bar:someType); 当TObjectProxy.Create时,我得到参数计数不匹配; 试图调用T的'Create'方法.

显然这是因为以下代码没有将任何参数传递给"Invoke"方法:

instance := ctor.Invoke(rType.AsInstance.MetaclassType, []);
Run Code Online (Sandbox Code Playgroud)

我创建了一个重载的类函数,它传递参数:

class function Create( Args: array of TValue ): TMock<T>; overload;static;
Run Code Online (Sandbox Code Playgroud)

并且正在进行我所做的有限测试.

我的问题是:

这是一个错误还是我做错了?

谢谢

PS:我知道Delphi-Mocks是以接口为中心的,但它确实支持类,我正在研究的代码库是99%的类.

delphi mocking delphi-mocks

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

为什么复制功能在64位Delphi XE3中表现不同?

在Delphi XE3中,Copy函数可用于包含或不包含第三个参数的字符串类型.例如,

s := '1234567890';
Writeln(Copy(s, 2));
Run Code Online (Sandbox Code Playgroud)

如果为32位EXE编译,则上面打印234567890.但是,当相同的代码编译为64位EXE时,它将不会打印任何内容.

为什么是这样?当将32位应用程序移植到64位时,我必须将所有这些代码实际更改为例如Copy(s,2,Length(s) - 1).

delphi copy delphi-xe3

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

重命名 Git 存储库有哪些副作用

假设我需要重命名一个已被许多开发人员下载的 Git 存储库。

如果我重命名此存储库,会发生什么副作用(如果有)?我的意思是,除了开发人员必须在本地存储库中执行更改才能更改其远程存储库之外,如下所示

git remote set-url origin new_url
Run Code Online (Sandbox Code Playgroud)

为了方便讨论,请考虑 Git 服务器是私有服务器,并且所有开发人员都属于同一家公司。

无论如何,我检查了有关在 Git 中重命名存储库的其他问题,但除了更改之外,没有一个问题具体说明了副作用git remote

重命名 Bitbucket git 存储库如何影响分叉存储库?

如何重命名 Git 存储库?

如何重命名 GitHub 上的存储库?

git rename repository

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

Oracle SQL:如果我将一个函数既作为字段又按顺序使用,是否会再次进行评估?

假设您有一个PL/SQL函数返回一些随机值,您将在SQL sentence返回的数据和Order by子句中使用它们.

现在,您可以用Order by三种"不同"的方式编写该子句:

按索引

Select Foo,
       MyFunction(Foo) orderField
  From FooTable
 Order By 2
Run Code Online (Sandbox Code Playgroud)

通过调用"再次"功能

Select Foo,
       MyFunction(Foo) orderField
  From FooTable
 Order By MyFunction(Foo)
Run Code Online (Sandbox Code Playgroud)

通过使用订单字段别名

Select Foo,
       MyFunction(Foo) orderField
  From FooTable
 Order By orderField
Run Code Online (Sandbox Code Playgroud)

第三种方法是可能的,因为该Order By子句是要解析的select的最后一个,然后Oracle已经知道了别名.

我的问题是,这三个查询的处理或性能有什么不同吗?特别是,第二个是否意味着MyFunction将再次评估呼叫?

我试图通过搜索文档,并通过运行Toad的一些查询以及查看explain plan但直到现在找不到任何显着差异来找出答案.

我的Oracle版本是11.2.0.3.0,如果这有任何问题.

sql oracle performance plsql oracle11g

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

构建Delphi + Oracle的自动化

在我的工作中,我们正在寻找一种自动构建工具.我们已经搜索了很多,但是有很多可能性我们不确定哪种工具是最好的选择,说实话.

我们甚至不确定是否有符合我们需求的产品.它应该具有以下功能:

  1. 与Subversion集成,意味着它应该能够同时进行更新和提交.
  2. 差异工具或与其集成的能力,以及自动合并文件的能力(嗯,至少不是有问题的文件).
  3. Delphi使用命令行编译器构建自动化.
  4. 与Oracle集成,意味着能够运行SQL脚本并编译PL/SQL包,函数等.
  5. 发送具有构建状态的电子邮件(我猜这是所有人都有的).

其他功能将受到欢迎,但目前不需要.获得至少第1点和第2点的任何东西都会很棒.

如果有人能指出我们某个特定的工具,我们将非常感激.

在此先感谢您的问候

svn delphi oracle automation build

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

将Delphi/Oracle应用程序从2层更改为3层

在我的公司,他们终于(大约时间......)考虑将我们最畅销的应用程序之一从2层转换为3层架构,包括逻辑(演示,业务和数据层)以及物理层面.可能我们将采用Delphi-Delphi-Oracle或Delphi-Java-Oracle方法进行更改.

这是一个相对古老而庞大的应用程序,在我开始在那里工作之前已经创建和修改了很长时间.除了必须改变某些东西之外,重构通常从未被考虑过.此外,业务逻辑存在于两个实际层中......叹息.

物理上的变化并没有给我带来太大的影响,但逻辑上的变化将是通过地狱的一种过程.为了尽可能地平滑它,我想调查一下哪种Delphi组件更适合3层模型.

¿您会考虑使用哪些替代方案?

architecture delphi oracle components 3-tier

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

有趣的HTML UI受Javascript OnLoad限制?

我使用R3.0.0和Shiny0.7.0创建一个Shiny网页HTML UI.

似乎我偶然发现了关于元素OnLoad()事件的Shiny中的限制或错误body.

由于Shiny没有为多个HTML页面做好准备,正如Joe Cheng 在此所述我想用jQuery而不是要显示和隐藏divs在必要.

除非我在OnLoad中隐藏div,否则这样做效果相当不错事件中.在那种情况下,它似乎reactive input components不再被检测到Shiny.

下面你可以看到一个测试用例:

Server.R

library(shiny)

shinyServer(function(input, output) {

    output$caption <- renderText({input$myInput})

})
Run Code Online (Sandbox Code Playgroud)

的index.html

<head>
    <script src="shared/jquery.js" type="text/javascript"></script> 
    <script src="shared/shiny.js" type="text/javascript"></script>
    <script type="text/javascript" src="js/library.js"></script>    
</head>

 <body onload="initForm();"> 


    <div id="dMenu">

        <a href="#" onclick="showFoo();">Show foo div</a>
        <br>
        <a href="#" onclick="showBar();">Show bar div</a>
    </div>

    <!-- some random div -->
    <div id="foodiv">This is the Foo div</div> …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery r shiny

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

支持TRestClient Delphi XE5中的UTF-8编码字符串

我想在Delphi XE5中使用新的TRest组件发送推文.我正在寻找一种方法来UTF8编码包含IS0-8859-1字符的推文.下面的代码有效,但涉及代码页转换等.这是更好的方法吗?任何人?

procedure TTwitterApi.Send(Tweet: string);
begin
  Reset;

  // Encode as UTF8 within (UTF-16 Delphi) string
  Tweet := EncodeAsUTF8(Tweet);

  FRestRequest.Resource := '1.1/statuses/update.json';
  FRestRequest.Method := rmPOST;
  FRestRequest.Params.AddItem('status', Tweet, pkGETorPOST);
  FRestRequest.Execute;
end;


function TTwitterApi.EncodeAsUTF8(UnicodeStr: string): string;
var
  UTF8Str: AnsiString;
  TempStr: RawByteString;
begin
  TempStr := UTF8Encode(UnicodeStr);
  SetLength(UTF8Str, Length(TempStr));
  Move(TempStr[1], UTF8Str[1], Length(UTF8Str));
  Result := UTF8Str;
end;
Run Code Online (Sandbox Code Playgroud)

delphi twitter utf-8 delphi-xe5

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