关键词:
【中文标题】进度条和文件复制问题?【英文标题】:Progress Bar and File Copying Problem? 【发布时间】:2010-11-20 22:43:05 【问题描述】:使用 VB 6
在我的项目中,当我将文件从一个文件夹复制到另一个文件夹时,我想像复制一样显示进度条......,一旦文件被复制,进度条就会显示 100 % Completed。
代码。
'文件复制
Private Sub Copy_Click()
Timer1.Enabled = True
Dim abc As Integer
Dim line As String
abc = FreeFile
Open App.Path & "\DatabasePath.TXT" For Input As #abc
Input #abc, line
databasetext = line
Dim fs As New FileSystemObject, f As File
Set f = fs.GetFile(databasetext)
f.Copy App.Path & "\"
Set fs = Nothing
Close #abc
End Sub
Private Sub Timer1_Timer()
ProgressBar1.Min = 0
ProgressBar1.Max = 100
ProgressBar1.Value = ProgressBar1.Value + 1
If ProgressBar1.Value = ProgressBar1.Max Then
Timer1.Enabled = False
End If
End Sub
上面的代码正在工作,但是当我单击复制按钮时,Progressbar1 不显示,一旦文件被复制到另一个文件夹。然后只有progressbar1在说明。
两者不会同时工作。
而且,一旦文件被复制,进度条应该显示 100%。现在显示不正确,文件仍在复制,进度条显示 100 %
谁能帮忙解决这个问题。
需要 VB 6 代码帮助。
【问题讨论】:
仍然无法正常工作。请问,它如何同时工作。 【参考方案1】:如果标准复制功能阻止计时器触发,那么您可以做的最好的事情是编写自己的副本,该副本一次读取数千字节的源文件并将其写入目标文件。
在每次读取和写入操作之间,您需要更新进度条并(可能)调用 DoEvents 以确保它重绘。
您的计时器代码也没有任何意义。如果每次发生火灾,它只是任意增加进度,而不考虑实际取得了多少进展。您最好将进度条传递给您的复制功能,以便它可以随时更新。
这样的事情可以做到:
Private Sub Copy_Click()
Dim abc As Integer
Dim line As String
abc = FreeFile
Open App.Path & "\DatabasePath.TXT" For Input As #abc
Input #abc, line
copyFile line, App.Path & "\" & line, ProgressBar1
Close #abc
End Sub
Sub copyFile(inFile As String, outFile As String, ByRef pg As ProgressBar)
Close
Const chunkSize = 1024
Dim b() As Byte
fhIn = FreeFile
Open inFile For Binary Access Read As #fhIn
fhOut = FreeFile
Open outFile For Binary Access Write As #fhOut
toCopy = LOF(fhIn) 'gets the size of the file
fileSize = toCopy
pb.Min = 0
pb.Max = toCopy
While toCopy > 0
If toCopy > chunkSize Then
ReDim b(1 To chunkSize)
toCopy = toCopy - chunkSize
Else
ReDim b(1 To toCopy)
toCopy = 0
End If
Get #fhIn, , b
Put #fhOut, , b
pg.Value = fileSize - toCopy
DoEvents
Wend
Close #fhIn
Close #fhOut
End Sub
【讨论】:
在生产中不要使用 #1 和 #2,使用 FreeFile,就像在原始函数中一样 :) @Gareth。它在这一行显示错误,如 Bad filename - Open inFile For Binary Access Read As #1,Open outFile For Binary Access Write As #2,我更改为 #abc,它显示相同的错误。 那是 #1/#2 咬你的东西。用现在编辑的代码试试吧。 @Gareth。它在“Open outFile For Binary Access Write As #fhOut”这一行显示“错误的文件名或编号”之类的错误 你传递给 inFile 和 outFile 什么?【参考方案2】:要使进度条发挥作用,它要么必须通过周期性循环内联更新,要么在单独的线程中运行。
【讨论】:
@Autocracy。 VB 6 新手,如何使用 Periodic 循环? 嗯,一个周期性的循环会像(复制文件的一部分,更新栏,重复直到完成)。我不在 VB(任何东西)中工作,所以我给出了一个与语言无关的答案。您会发现线程在不同语言之间有所不同,但这个问题在它所需要的方面是普遍存在的。见la-solutions.co.uk/content/MVBA/MVBA-ProgressBar.htm 和planet-source-code.com/vb/scripts/…【参考方案3】:老式 VB6 中的副本是一个阻塞命令。所以即使 DoEvents 也会给出相同的结果(文件将被复制,然后进度条会显示出来)。如果您在慢速介质上复制大文件并且需要能够显示进度,那么您应该创建目标文件并在循环中以块的形式移动字节,在该循环中您可以更新进度条。遗憾的是,对于 OP 中给出的示例,由于每个操作都是同步的,因此您将无法获得所需的内容。
编辑:被我上面的那个人殴打:)
【讨论】:
进度条和浓缩咖啡
】进度条和浓缩咖啡【英文标题】:ProgressBarsandEspresso【发布时间】:2015-10-2219:30:07【问题描述】:当我在运行某些espresso测试时显示的布局中有一个ProgressBar-然后我遇到:Causedby:android.support.test.espresso.AppNotIdleException:Loopedfor1670it... 查看详情
UWP 进度条和绑定
】UWP进度条和绑定【英文标题】:UWPProgressBarandBinding【发布时间】:2017-07-1818:54:20【问题描述】:我在更新ProgressBar时遇到了非常奇怪的情况。基本上,我有SemanticZoom,在ZoomedIn模式下我有ListView。每个ListView都包含ProgressBar。这... 查看详情
IOS Swift中进度条和标签的约束
】IOSSwift中进度条和标签的约束【英文标题】:ConstraintsforprogressbarandlabeltogetherinIOSSwift【发布时间】:2019-04-1105:39:37【问题描述】:我需要根据某些条件水平显示一个进度条和一个标签,而基于不同的条件,我需要垂直显示一个... 查看详情
Xamarin Android C# 中的进度条和线程
】XamarinAndroidC#中的进度条和线程【英文标题】:ProgressbarandthreadinXamarinAndroidC#【发布时间】:2018-10-3023:53:08【问题描述】:我尝试使用这种方法加载我的SQL。当我点击按钮登录时,该方法正在工作,它显示了循环进度对话框,但... 查看详情
HTML5:Google IMA 显示默认进度条和倒计时
】HTML5:GoogleIMA显示默认进度条和倒计时【英文标题】:HTML5:GoogleIMAshowdefaultprogressbarandcountdown【发布时间】:2015-09-2417:20:04【问题描述】:有人知道如何配置adsRenderingSettings以便在广告播放期间显示默认的进度条和倒数计时器吗... 查看详情
前端上传文件实时显示进度条和上传速度的工作原理是怎样的?
参考技术A后端的责任。前端上传文件实时显示进度条和上传速度的工作原理就是后端的责任,在Django中实现需要重载上传文件的函数,在上传时文件是被分成数个MB的chunk处理的,每次都会调用这个上传函数。也就是说,每处理... 查看详情
我如何实现带有进度条和取消按钮的自定义 UIAlertview?
】我如何实现带有进度条和取消按钮的自定义UIAlertview?【英文标题】:howicanimplementacustomUIAlertviewwithaprogressbarandacancelbutton?【发布时间】:2009-11-0103:30:39【问题描述】:您好iPhone应用程序开发人员,我正在开发一个iphone应用程序... 查看详情
进度条和滑动条
1#import"ViewController.h"2#import"ViewController2.h"34@interfaceViewController()56@end78@implementationViewController910@synthesizeslider=_slider;11@synthesizepView=_progressView;1213-(void)viewDidLo 查看详情
怎么用extjs写一个进度条和messagebox?
我想知道EXTJS4.0要调用哪些脚本,和怎么写一个进度条(范例中能控制多少秒后进度条读取完成自动跳转到某网页)和MESSAGEBOX(点击确认后能够跳转到某网页)的代码范例,最好把效果图一起发过来,我的邮箱:shcmhsy@vip.qq.com(... 查看详情
Android:为 Android Market 等 Endless List 实现进度条和“正在加载...”
】Android:为AndroidMarket等EndlessList实现进度条和“正在加载...”【英文标题】:Android:Implementingprogressbarand"loading..."forEndlessListlikeAndroidMarket【发布时间】:2011-06-0717:07:14【问题描述】:从AndroidMarket获得灵感,我实现了一个E... 查看详情
复制文件时显示进度百分比
】复制文件时显示进度百分比【英文标题】:Showprogresspercentagewhilecopyingfile【发布时间】:2017-12-2114:35:23【问题描述】:目前我正在从库中挑选一个文件并将其复制到指定的文件夹中。在复制时,我显示的是ProgressDialog,我正在... 查看详情
无法获得文件复制进度
】无法获得文件复制进度【英文标题】:Notabletogetfilecopyingprogress【发布时间】:2013-11-0511:12:34【问题描述】:我正在尝试获取正在复制的文件的进度最初我使用下面的代码发送一个复制文件的请求。一旦创建了文件。我发送响... 查看详情
使用进度条在python中复制文件
】使用进度条在python中复制文件【英文标题】:copyfilesinpythonwithprogressbar【发布时间】:2020-06-1706:40:27【问题描述】:我有一个python脚本,可以复制选定位置中存在的文件夹和文件。此任务完美运行,现在我想在复制时显示进度... 查看详情
大文件复制过程中的进度(复制项目和写入进度?)
】大文件复制过程中的进度(复制项目和写入进度?)【英文标题】:Progressduringlargefilecopy(Copy-Item&Write-Progress?)【发布时间】:2011-01-2621:48:06【问题描述】:有没有办法在PowerShell中复制一个非常大的文件(从一台服务器到另... 查看详情
使用进度在 Windows 命令行上复制文件
】使用进度在Windows命令行上复制文件【英文标题】:CopyfilesonWindowsCommandLinewithProgress【发布时间】:2010-09-0816:43:16【问题描述】:我需要使用Windows命令行(默认在XPPro或更高版本上可用)复制文件并在此过程中显示进度。进度指... 查看详情
在进度条上显示文件复制状态
】在进度条上显示文件复制状态【英文标题】:ShowingFileCopyStatusonaProgressBar【发布时间】:2010-01-1913:13:20【问题描述】:我正在尝试执行低级文件复制,但也使用确定的进度条显示我的进度。有什么办法可以做到这一点吗?我查... 查看详情
什么意思 layout_width/height = wrap_content 在进度条和开关
】什么意思layout_width/height=wrap_content在进度条和开关【英文标题】:Whatdoesitmeanlayout_width/heigth=wrap_contentinprogressbarandswith【发布时间】:2020-07-2711:08:52【问题描述】:我无法理解View元素(如ProgressBar、Switch、原始View的值wrap_content... 查看详情
使用 NSFileManager 在复制文件期间更新进度条
】使用NSFileManager在复制文件期间更新进度条【英文标题】:updateprogressbarduringcopyfilewithNSFileManager【发布时间】:2013-07-0619:39:07【问题描述】:我复制文件然后我的应用程序完成从资源启动到缓存目录。但我想在复制文件的过程... 查看详情