这个问题是stackoverflow上人们特别评论的延续,我现在已经看过几次不同的时间了.我和教我Delphi的开发人员一样,为了保证安全,if assigned()在释放对象之前,以及在做其他各种事情之前总是先做检查.但是,我现在被告知我不应该添加此支票.我想知道如果我这样做,应用程序编译/运行的方式是否存在任何差异,或者它是否会对结果产生影响...
if assigned(SomeObject) then SomeObject.Free;
Run Code Online (Sandbox Code Playgroud)
假设我有一个表单,我在表单创建时在后台创建一个位图对象,并在完成后释放它.现在我想我的问题是,当我试图访问可能在某些时候可能已经免费的对象时,我已经习惯了对我的很多代码进行检查.即使没有必要,我也一直在使用它.我喜欢彻底......
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FBitmap: TBitmap;
public
function LoadBitmap(const Filename: String): Bool;
property Bitmap: TBitmap read FBitmap;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FBitmap:= TBitmap.Create;
LoadBitmap('C:\Some Sample Bitmap.bmp');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if assigned(FBitmap) then begin //<-----
//Do some routine to close file …Run Code Online (Sandbox Code Playgroud) 马尔可夫链模型和隐马尔可夫模型有什么区别?我在维基百科上读过,但无法理解这些差异.
是否有标准函数在Delphi中执行绝对的< - >相对路径转换?
例如:
'C:\Projects\Project1\''..\Shared\somefile.pas''C:\Projects\Shared\somefile.pas'我正在寻找这样的东西:
function AbsToRel(const AbsPath, BasePath: string): string;
// '..\Shared\somefile.pas' =
// AbsToRel('C:\Projects\Shared\somefile.pas', 'C:\Projects\Project1\')
function RelToAbs(const RelPath, BasePath: string): string;
// 'C:\Projects\Shared\somefile.pas' =
// RelToAbs('..\Shared\somefile.pas', 'C:\Projects\Project1\')
Run Code Online (Sandbox Code Playgroud) 我在我的SQL Server 2008 R2中偶然发现了一个问题 - 当我打电话时@@SERVERNAME,它正在返回我的OLD计算机的机器名,而不是当前的机器名.为什么是这样?我该如何解决?SQL Server以某种方式记住旧机器名称.
在Delphi XE2中,我在一对设计/运行时包中有一个控件.最初,一切都很好.我已经多次建造了它们.突然间没有任何警告,设计时间包开始在我的一个单位抱怨Graphics我建造时单元缺失.Graphics是一个标准单位,但在这一个地方找不到.我甚至没有对这个单位做过任何改动,据我所知,任何可能影响这个的变化.
这里只是本单元顶部(界面)的用途:
uses
Graphics, ColorConv, Classes, Dialogs, ZLib;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它是一个非常简单的单元,我只对这个项目进行了非常简单的更改.有什么可以让它开始抱怨这一点?
奇怪的是,如果我安装它,一切正常,它只是不构建.
有相当多的代码,我不想发布整个事情.
begin当我使用该Format Source选项时,如何配置RAD Studio IDE以使用相同行或下一行格式化我的代码?
最常见的偏好之一是begin- 在同一条线上或它自己的线上的位置.如何设置Delphi begin在Delphi XE2中使用一行或另一行格式化源代码?这是指当你去Edit>时Format Source
我在几乎所有的项目中都多次使用过这个场景,当我进行某种数据转换时,当涉及到布尔值时,我觉得在简单化方面有点迷失.下面的声明就像我的代码中的一个痛苦的拇指:
if BoolVal then
StrVal:= 'True'
else
StrVal:= 'False';
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更简单的方法来执行此评估?或许有些使用Case我不了解的陈述?我的实际实现比仅仅更复杂,StrVal但它确实包括返回两个不同的值,具体取决于它是True还是False.例如,这里有一些真正的代码......
if fsBold in Can.Font.Style then
ConvertTo(AddSomeOtherText + 'True')
else
ConvertTo(AddSomeOtherText + 'False');
Run Code Online (Sandbox Code Playgroud)
这只是为了强调我希望有多简单.我想知道我是否可以按照以下方式做点什么:
ConvertTo(AddSomeOtherText + BoolToStrCase((fsBold in Can.Font.Style), 'True', 'False'));
Run Code Online (Sandbox Code Playgroud)
我确信这不是一个真正的命令,但我在一条线上寻找那种简单性.
我们有一个由众多应用程序组成的系统.所有应用程序的版本都同时更改.目前,当我们发布新版本时,我们必须手动打开每个应用程序的项目选项并逐个更改版本.有没有办法在同一版本上编译所有应用程序,例如,将其保存在全局文件中并在编译时,读取此文件并将该版本分配给项目?我只是想消除太多步骤,因为我们计划更频繁地更改版本号.我想在一个地方改变它.可以这样做吗?如何?
我按照教程在ASP.NET/C#4.0 Web应用程序中实现LDAP身份验证.我在Visual Studio 2010中这样做了.该站点在调试模式下通过Visual Studio运行良好,但是当我在IIS7中发布此站点时,它失败并出现以下错误:
HTTP错误500.24 - 内部服务器错误检测到的ASP.NET设置不适用于集成管理管道模式.
最可能的原因:
- system.web/identity@impersonate设置为true.
实际上,本教程的一部分要求我将其添加到配置文件中...
<identity impersonate="true"/>
Run Code Online (Sandbox Code Playgroud)
那么为什么我会收到此错误,我该如何解决?
在Delphi的早期版本中,我使用数据模块(TDataModule)作为保留非可视组件的地方,以避免使主表单混乱.在Delphi XE2中,当我创建一个新的数据模块时,它只允许我在其中放置与数据库相关的组件(例如TADOConnection和TDataSource).这是为什么以及如何将其他组件放入其中?还有其他选择吗?
delphi ×7
delphi-xe2 ×5
.net-4.0 ×1
asp.net ×1
boolean ×1
c# ×1
compilation ×1
datamodule ×1
ldap ×1
markov ×1
msbuild ×1
path ×1
scope ×1
sql-server ×1
version ×1