- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找到了具有进度的 CopyFileEx 示例,但我需要从具有整体进度的文件夹中复制一些文件。
任何人都可以提供如何执行此操作的信息吗?或者有好的替代方案(组件、功能)吗?
非常感谢您的帮助!!!
最佳答案
这是我没有 WinApi 的解决方案。
首先,复制一个文件的过程:
procedure CopyFileWithProgress(const AFrom, ATo: String; var AProgress: TProgressBar);
var
FromF, ToF: file;
NumRead, NumWritten, DataSize: Integer;
Buf: array[1..2048] of Char;
begin
try
DataSize := SizeOf(Buf);
AssignFile(FromF, AFrom);
Reset(FromF, 1);
AssignFile(ToF, ATo);
Rewrite(ToF, 1);
repeat
BlockRead(FromF, Buf, DataSize, NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
if Assigned(AProgress) then
begin
AProgress.Position := AProgress.Position + DataSize;
Application.ProcessMessages;
end;
until (NumRead = 0) or (NumWritten <> NumRead);
finally
CloseFile(FromF);
CloseFile(ToF);
end;
end;
现在,从目录中收集文件并计算其总大小以获取进度。请注意,该过程需要一个 TStringList 类的实例,其中将存储文件路径。
procedure GatherFilesFromDirectory(const ADirectory: String;
var AFileList: TStringList; out ATotalSize: Int64);
var
SR: TSearchRec;
begin
if FindFirst(ADirectory + '\*.*', faDirectory, sr) = 0 then
begin
repeat
if ((SR.Attr and faDirectory) = SR.Attr) and (SR.Name <> '.') and (SR.Name <> '..') then
GatherFilesFromDirectory(ADirectory + '\' + Sr.Name, AFileList, ATotalSize);
until FindNext(SR) <> 0;
FindClose(SR);
end;
if FindFirst(ADirectory + '\*.*', 0, SR) = 0 then
begin
repeat
AFileList.Add(ADirectory + '\' + SR.Name);
Inc(ATotalSize, SR.Size);
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
最后是使用示例:
procedure TfmMain.btnCopyClick(Sender: TObject);
var
FileList: TStringList;
TotalSize: Int64;
i: Integer;
begin
TotalSize := 0;
FileList := TStringList.Create;
try
GatherFilesFromDirectory('C:\SomeSourceDirectory', FileList, TotalSize);
pbProgress.Position := 0;
pbProgress.Max := TotalSize;
for i := 0 to FileList.Count - 1 do
begin
CopyFileWithProgress(FileList[i], 'C:\SomeDestinationDirectory\' + ExtractFileName(FileList[i]), pbProgress);
end;
finally
FileList.Free;
end;
end;
尝试缓冲区大小可以提高性能。不过,和现在一样,速度已经相当快了。也许比使用这个臃肿的 Vista/Win 7 对话框进行复制还要快。
这也是我几年前为其他论坛编写的快速解决方案,它可能包含一些错误。因此使用风险自担;-)
关于Delphi:从具有总体进度的文件夹中复制文件。复制文件Ex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354033/
Elixir 文档 states那个 In addition to the Elixir file extension .ex, Elixir also supports .exs files for
明日方舟TW-EX-5突袭怎么打 TW-EX-5突袭打法详解 关卡难点:开局高压+必须抢夺留声机 必备干员:减速类辅助、夜莺/法抗盾/控制干员 打法思路: 开局扔推王或者其他强力先锋,只
明日方舟TW-EX-6突袭怎么打 TW-EX-6突袭打法详解 关卡难点:抢夺留声机 必备干员:三个先锋,地刺,减速类干员 打法思路 开局左侧扔下桃金娘和先锋,然后马上爆费,在下方扔下第二
明日方舟TW-EX-7突袭怎么打 TW-EX-7突袭打法详解 关卡难点 本关最大的难点就是敌人输出过高,突袭难度情况下高练度重装也扛不住敌人的输出,需要利用箱子的布置还有留声机的输出来解决敌人,
明日方舟TW-EX-8突袭怎么打 TW-EX-8突袭打法详解 关卡难点 关卡的翻车点有两个,一个是注意自爆兵自爆的地点一定要正好,尽量保证其自爆的地方不要波及留声机,否则影响很大,另外就是如何蒸
明日方舟TW-EX-6突袭怎么打 TW-EX-6突袭小火龙单核打法攻略 1、关卡难点 活动开启时间:07月09日16:00-07月30日03:59 关卡开启时间:07月16日16:00-07
所以我一直在研究神圣,它看起来很棒。不幸的是,我没有找到任何像我试图实现的多文件用例示例。 所以我有一个名为configuration.py的文件,它旨在包含不同的变量,这些变量将(使用神圣)插入到代
我说的是Try ... Catch ex as Exception .... End Try 如果我将异常传递给错误记录器,我应该传递异常对象 (ex) 还是 ex.ToString ?传递 ex.T
这是我最近在工作的遗留代码中遇到的一个简单的最佳实践问题。我找不到针对这个特定问题的良好引用,因为我们可以通过多种方式来实现这一目标。但是,我想知道实现这一目标的最佳和最有效的方法。下面我创建了一些发
在 C# 中,年轻的开发人员经常使用“throw ex”而不是“throw”来向父方法抛出异常。 示例: try { // do stuff that can fail } catch (Ex
我们使用下面的脚本作为 EC2 实例的用户数据。我不明白 -ex 选项的用途是什么? #!/bin/bash -ex yum update -y yum groupinstall -y "Web Se
这是 ls -R 命令的输出: .: compare.sh searchByFile.sh startup.sh temp.txt test.sh compare.sh~ search
我真的是编程新手,我正在构建一个关于运动和位置的应用程序。我无法从“词典”中获取特定项目,但“词典”并不是真正的词典。 基本上,我有一个 TableView ,其中包含从我的 Firebase Fir
所以。我正在制作一个论坛,并且我想使用 AngularJS 来构建它。 首先。 现在,我已经通过以下方式建立了与数据库的连接: prepare($sql)){ $query->bind_result(
关于泛型的两个简单问题。 下面两个函数定义是否相同? FunctionA(Exception ex); FunctionB(T ex) where T : Exception; 通用实现 (Funct
MSVC 10 和 MSVC 9 在编译我的异常框架时都生成了 4 级警告消息,尽管程序的行为似乎是正确的。异常框架相当庞大和复杂,但我已经设法将其归结为它的本质。这是一个完整的程序,您可以在 VS1
我的问题是:用 getMessage 或 toString 或两者都记录更好吗?考虑到开源引发的错误。看到评论中的问题,但没有得到答案。也许我错过了什么?不要介意记录其中之一的小性能影响,但除非有充分
当我尝试使用 create-react-app 创建一个新的 React 应用程序时,我得到以下信息: » npx create-react-app my-order Creating a new R
背景 我正在尝试将 2 个单独工作的功能结合起来,但在使它们协同工作时遇到了麻烦。 *1) 如 solr wiki 所述我可以标记一个特定的 fq,然后在我的 facet.field 中排除它。即使在
我正在尝试使用从this website下载的代码来学习 ruby 。 我被困在这一点上。 def test_you_dont_get_null_pointer_errors_when_calli
我是一名优秀的程序员,十分优秀!