我觉得这应该很容易,但谷歌目前完全失败了.我想打开一个文件,或者如果它不存在就创建它,并写入它.
下列
AssignFile(logFile, 'Test.txt');
Append(logFile);
Run Code Online (Sandbox Code Playgroud)
当文件不存在时,在第二行引发错误,我认为这是预期的.但我真的没有找到如何a)测试文件是否存在和b)在需要时创建它.
仅供参考,在Delphi XE工作.
我用eclipse做php开发.我最近开发了一个IDE挂起的问题,每当我打开eclipse时立即返回挂起.它说它正在"正在初始化Java工具.我在多个版本中重新安装了java和eclipse.我删除了我的工作区.我最终删除了工作区并对我的项目进行了新的检查,然后它再次开始工作.
好的,所以项目搞砸了.精细.我得到了重置,创建了一些我需要使用本地服务器(.user.ini和php文件)从开发目录运行项目的文件,并且能够运行它并进行一些更改.一切正常.我正在添加几个文件,并注意到我手动创建的文件没有显示在包资源管理器中,所以我在根级别刷新....它挂起.
我最终杀了应用程序并重新启动我仍然可以使用我打开的一个文件,但每当我重新打开项目目录时它就会挂起.我删除了工作区,并尝试从现有源重新创建项目,但在进入源目录并点击下一步后,它会挂起.
我是否对项目目录做了一些会导致eclipse挂起的东西?
这与此问题类似.我问"为什么?" 以最流行的反应,但我不知道任何人会永远看着它一次.至少不是及时的.
无论如何,我的问题是关于将对象创建的责任委托给函数或过程的最佳实践,而不会导致内存泄漏.看来这个:
procedure FillObject(MyObject: TMyObject; SomeParam: Integer);
begin
//Database operations to fill object
end;
procedure CallUsingProcedure();
var
MyObject: TMyObject;
begin
MyObject = TMyObject.Create();
try
FillObject(MyObject, 1);
//use object
finally
MyObject.Free();
end;
end;
Run Code Online (Sandbox Code Playgroud)
比这更受欢迎:
function CreateMyObject(DBID: Integer): TMyObject;
begin
Result := TMyObject.Create();
try
//Database operations to fill object
except on E: Exception do
begin
Result.Free();
raise;
end;
end;
end;
procedure CallUsingFunction();
var
MyObject: TMyObject;
begin
MyObject = CreateMyObject(1);
try
//use object
finally
MyObject.Free();
end;
end;
Run Code Online (Sandbox Code Playgroud)
为什么? …
有时在调试时,特别是在捕获异常并通过调用析构函数跟踪时,Delphi会逐步执行大量的汇编代码.命中Shift + F8似乎会造成混乱.
我可以告诉调试器自动跳过汇编代码吗?
你应该如何安全地创建和释放多个对象?
基本上,这种事情:
newOrderSource := TWebNewOrderSource.Create();
twData := TTWData.Create();
webData := TWebData.Create();
try
//do stuff
finally
newOrderSource.Free();
twData.Free();
webData.Free();
end;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,第二个和第三个create命令不安全,因为它们与数据库一起使用.我是否应该将所有Creates放入try块并检查它们是否在我免费呼叫之前被分配了?
我想只获得选择的选定选项.例如:
<select>
<option value="0">2002/12</option>
<option value="1">2003/12</option>
<option value="2">2004/12</option>
<option value="3">2005/12</option>
<option value="4">2006/12</option>
<option value="5" selected>2007/12</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我知道我能做到
theSelectTag.findAll('option',attrs={'selected':''})
Run Code Online (Sandbox Code Playgroud)
但这是返回所有选项.有没有办法获得属性存在的所有元素?请注意,我要求所有,因为我正在抓取的网站确实包含多个选项的选定属性.
我正在使用Python 2.7和Beautiful Soup 4.1.2
在Eclipse中,我收到没有开始标记(<div>)的警告,因为开始标记位于另一个文件中.如何禁止此警告以使其远离"问题"窗口?
我知道在Java中我可以做@SuppressWarning,但我不知道如何使用php.我假设有,基于Eclipse中的PHP类型提示的可用性,但也许它不是?
我是Delphi的新手,我正在尝试使用DEHL Collections库.(请参阅http://code.google.com/p/delphi-coll/)从IDE的角度来看,我遇到了一些麻烦.它编译并正确运行,但Delphi XE在我使用HashSet库的任何地方都显示错误.最大的不满是阻止我使用代码完成.
我得到错误的第一个位置是在对象声明中:
uses
SysUtils, Windows, Collections.Base, Collections.Sets, Collections.Lists,
adscnnct, adstable,
uOtherClass;
type
OneClass = class(OtherClass)
private
_bad: THashSet<string>; // THashSet underlined
_good: TList<string>; // No problems
end;
Run Code Online (Sandbox Code Playgroud)
错误指出:"类型参数与约束不匹配"
我不认为这是配置,因为我可以正常使用TList,但这是我如何设置它:我已经将库复制到Projects/Libs/DeHLCollections/Library并将库编译为Projects/Libs/bin.我已经将bin目录包含在我的全局库路径中,这使它可以编译并运行.我已经尝试将所有内容(/ libs,/ DeHLCollections,/ Library)添加到它中,以期让IDE帮助我,但它似乎没有帮助.
无论如何要解决这个问题,还是我只需要处理它?
使用DeHL Collections版本1.1.1.119
我正在调用的函数call_user_func应该返回FALSE.那么如果可调用无效,我如何检测错误?
(旁注:为什么他们没有抛出异常而不是返回错误代码?或者有没有办法"捕获"错误?我有一个错误句柄.我应该为它抛出异常吗?)
我是Delphi的新手并且已经手动完成了所有的内存管理,但是听说Delphi能够使用接口来进行引用计数并以这种方式提供一些内存管理.我想开始这个,但有一些问题.
一般来说,我该如何使用它.创建接口和实现它的类.然后,只要我需要该对象,变量实际上是接口类型,但实例化对象和presto?没有必要考虑解放它吗?没有更多的尝试 - 终极?
为真正不需要它们的类创建一堆接口似乎非常麻烦.有关自动生成这些的提示吗?我该如何最好地组织它?接口和类在同一个文件中?
有什么常见的陷阱可能会让我感到悲伤?例如:将接口对象转换为其类的对象是否会破坏我的引用计数?或者Delphi是否有任何非显而易见的方法来创建引用循环?(除了A使用B使用C使用A)
如果有教程覆盖任何一个,那将是很好的,但我没有在我的搜索中提出任何东西.谢谢.