我正在使用Delphi 2007.
我正在将文件复制到远程驱动器.复制结束时,我关机/待机.可能会发生某些文件无法从缓冲区复制到磁盘,并且远程磁盘断开连接,因此备份未完成.我需要检测该磁盘上的磁盘活动,以便能够在计算机上执行关闭操作.
有没有办法在这种情况下检测磁盘活动?
TTreeNode没有Visible属性,因此不存在明显的选项.有没有其他方法可以使TTreeNode及其所有子节点不可见?当然,我希望以后能够再次显示它.
这是Delphi 2007.
注意#1:我知道替代TVirtualTreeView,如果没有简单的方法可以使用TTreeView完成此操作,我会检查它.
注意#2:我只需要顶级节点的选项.我想隐藏的人通常甚至没有孩子.
我在结构面板中有很多错误.该应用程序使用Delphi 2007编译并运行良好.但代码中有许多代码具有红色下划线.如果我按Ctrl +左键单击它,它会找到原始声明.但是所有这些错误仍然很烦人.
标准VCL文件(如Dialogs,StringUtils等)的单元文件永远不会在项目DPR文件中引用.但是什么时候应该添加对DPR文件的引用?现在我有自己的源文件和自己的组件源.
那么Ravereport,Devexpress,Indy,Gnostice等的源文件呢?我希望尽可能快的codeinsight,但当然我不想在DPR文件中添加膨胀.我使用Delphi 2007
又见这个问题的一个相关的问题.
问候
考虑下一个示例应用程序
program TestMemory;
{$APPTYPE CONSOLE}
uses
PsAPI,
Windows,
SysUtils;
function GetUsedMemoryFastMem: cardinal;
var
st: TMemoryManagerState;
sb: TSmallBlockTypeState;
begin
GetMemoryManagerState(st);
result := st.TotalAllocatedMediumBlockSize + st.TotalAllocatedLargeBlockSize;
for sb in st.SmallBlockTypeStates do
begin
result := result + sb.UseableBlockSize * sb.AllocatedBlockCount;
end;
end;
function GetUsedMemoryWindows: longint;
var
ProcessMemoryCounters: TProcessMemoryCounters;
begin
Result:=0;
ProcessMemoryCounters.cb := SizeOf(TProcessMemoryCounters);
if GetProcessMemoryInfo(GetCurrentProcess(), @ProcessMemoryCounters, ProcessMemoryCounters.cb) then
Result:= ProcessMemoryCounters.WorkingSetSize
else
RaiseLastOSError;
end;
procedure Test;
const
Size = 1024*1024;
var
P : Pointer;
begin
GetMem(P,Size);
Writeln('Inside');
Writeln('FastMem '+FormatFloat('#,', GetUsedMemoryFastMem));
Writeln('Windows '+FormatFloat('#,', GetUsedMemoryWindows));
Writeln(''); …Run Code Online (Sandbox Code Playgroud) 我有一个由DataSource链接到DBGrid的ADOQuery.
ADOQuery和DataSource位于DataModule中,连接采用另一种形式.
在查询获取记录时,有没有办法让我的应用程序显示行?
像MSSQL Management Studio一样.
选择大约需要7分钟来终止执行.
我正在使用Delphi 2007.
这是关于Delphi和VCL.
我有几个框架可以用于多种形式,通常是在代码中创建并添加到表单中.表单可能包含其中几个框架.当包含它的表单被取消激活时,我需要在这些帧中执行一些代码,并在激活它时将其反转.
TMyFrame.FormActivated;
TMyFrame.FormDeactivated
Run Code Online (Sandbox Code Playgroud)
一种解决方案是在那些调用框架方法的表单中使用FormActivate/FormDeactivate事件处理程序.
procedure TMyForm.OnActivate(_Sender: TObject);
begin
FFrame1.FormActivated;
FFrame2.FormActivated;
end;
Run Code Online (Sandbox Code Playgroud)
这就是我现在实现它的方式,但它有几个缺点:
另一种选择是从帧的构造函数中设置FormActivate/FormDeactivate事件.但这意味着在这些事件中不能执行其他代码,如果在同一表单上有多个这样的帧,它将无法工作.
是否有任何其他选项适用于包含其中几个框架的任何表单?
如果这很重要,我需要Delphi 2007.
我正在尝试将SysUtils.WrapText()函数与包含转义的单引号字符的字符串一起使用,并且得到了意外的结果。
var
Lines : TStrings;
begin
Lines := TStringList.Create;
try
Lines.Text := WrapText('Can''t format message, message file not found', 15);
ShowMessage(Lines.Text);
finally
Lines.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果字符串包含撇号字符,则该函数似乎根本不会包装字符串。
我也尝试使用#39代码而不是单引号char,但是问题仍然存在。此外,我已经检查过Lines.Count了1。
我试过删除单引号字符:
var
Lines : TStrings;
begin
Lines := TStringList.Create;
try
Lines.Text := WrapText('Cant format message, message file not found', 15);
ShowMessage(Lines.Text);
finally
Lines.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
然后开始按预期包装字符串:
我想知道为什么会发生这种情况,以及如何将WrapText()函数与此类字符串一起使用?
我认为GExperts中有一些东西可以做到这一点,但如果有的话,我看不到它.
我必须在包含大约100种不同表单的项目中的每个表单中更改SCALED属性(从默认值TRUE变为FALSE).因为SCALED的默认值为TRUE,所以它实际上并不显示为.DFM文件中的一行(当作为文本查看时),因此没有任何我可以"获得"GREP(等)的东西.
任何人都可以建议以所有这些形式设置此属性的快速方法吗?表单是各种不同类的子类,我真的不想做一些覆盖SCALED属性的中间TForm后代 - 部分是因为我尝试(简要地)这样做并发现将SCALED属性设置为false 继承的create 之后对表单没有任何区别,并在继承的create 之前设置它会导致异常.:-)
有人有什么建议吗?如果我能帮助它,我真的想避免一个接一个地打开所有这些形式,只因为我一定会错过一个!
我正在使用TFileSteam打开日志文件.我希望能够从其他进程读取此日志文件.我认为fmShareDenyWrite模式允许这样做.
但是,如果我尝试从其他进程打开该文件,我会收到错误.例如,如果我尝试从命令行键入文件,我会得到"进程无法访问该文件,因为它正被另一个进程使用".
这是文件初始化代码:
if FileExists(AutoLogFileName) then
_ActivityLogStream := TFileStream.Create(AutoLogFileName,
fmOpenReadWrite or fmShareDenyWrite)
else
_ActivityLogStream := TFileStream.Create(AutoLogFileName,
fmCreate or fmShareDenyWrite);
Run Code Online (Sandbox Code Playgroud)
注意:我使用的是Delphi版本6.
delphi ×10
delphi-2007 ×10
delphi-2009 ×1
disk ×1
escaping ×1
sql-server ×1
tadoquery ×1
vcl ×1
word-wrap ×1