Shell如何实现从文件中的第n行开始读取记录?
可以用C来实现,当然,实现的方法还是跳过这些行,如下:FILE *fp = fopen("datafile.dat", "r");if(fp == NULL) { printf("open file error!\n"); exit(1); } while(!foef(fp)){ static int line_count = 0; memset(lines, 0, sizeof(lines)); line_count ++;//第一次就是第一行 /* 取每行的内容 */ if(!fgets(lines, fp, 1024) break; /* 小于100000就继续下一行 */ if( line_count = 200000 ) break;//大于20万就退出该循环 ///下面是处理的过程。} 这个简短程序就实现了取第10万行到第20万行的数据。这10万和20万可以用参数带入,比如这个程序运行名是do_proc,那参数可以这么带:do_proc 100000 200000
vb程序中如何读取文本文件指定行指定位置的数据?
'这个代码有要求:每个数据不能大于8个字符(tab键默认的所占的字符长度)
Private Sub Form_Click() '请点击窗体
Me.Cls
Dim xRow, yLine, i, j As Long, Temp As String, Arr(1 To 99) As String
xRow = Val(InputBox("输入行数:"))
yLine = Val(InputBox("输入列数:"))
Me.AutoRedraw = True: j = 1
Open "C:\\Documents and Settings\\Administrator\\桌面\\1.txt" For Input As #1 '文件路径
For i = 1 To xRow
Input #1, Temp
Next i
Close #1
For i = 1 To Len(Temp)
If Mid(Temp, i, 1) = Chr(9) Then
Arr(j) = Left(Temp, i - 1): Temp = Replace(Temp, Arr(j) & Chr(9), "", , 1)
j = j + 1: i = 0
Else
If i = 9 Then
Arr(j) = Trim(Left(Temp, i - 1)): Temp = Replace(Temp, Arr(j), "", , 1)
j = j + 1: i = 0
End If
End If
If Len(Temp) = 0 Then Exit For
Next i
Print Arr(yLine)
End Sub
又或者用下面的代码,没有上面的要求了:
Private Sub Form_Click() '请点击窗体
Me.Cls
Dim xRow, yLine, i, j As Long, Temp As String, Arr
xRow = Val(InputBox("输入行数:"))
yLine = Val(InputBox("输入列数:"))
Me.AutoRedraw = True: j = 1
Open "C:\\Documents and Settings\\Administrator\\桌面\\1.txt" For Input As #1 '文件路径
For i = 1 To xRow
Input #1, Temp
Next i
Close #1
Arr = Split(Temp, Chr(9))
Print Arr(yLine - 1)
End Sub
文件损坏怎么办?
是文件损坏了,你按照它的要求运行一下chkdsk这个程序就好了。 下面是Chkdsk的使用介绍: Chkdsk是系统检查磁盘当前状态的一个命令,启动它可以显示磁盘状态、内存状态和指定路径下指定文件的不连续数目。选择“开始→运行”输入“Chkdsk”回车,即可启动Chkdsk,它会自动校验文件并将丢失的链接转换成文件。 CHKDSK命令可检查磁盘状态并显示状态报告,还能修正磁盘错误。 状态报告显示MS-DOS文件系统中的逻辑错误,该文件系统由文件分配表(FAT)和目录组成(CHKDSK不验证文件中的信息能否准确读出)。如果磁盘有错误,CHKDSK便会给出一条警告信息。所以,应不时地用CHKDSK来检查一下磁盘有无错误,以保证系统的正常运行。一、CHKDSK命令的语法 CHKDSK drive:[[path]filename][/F][/V] 若要显示当前驱动器的磁盘状态,可用命令: CHKDSK 二、CHKDSK命令的参数解释 (1)drive 指定要用CHKDSK检查的磁盘所在的驱动器。 (2)[path]filename 指定要用CHKDSK进行碎片检查的一个或一组文件的路径及名称,可用通配符(*或?)指定多上文件。 三、CHKDSK命令的开关项 (1)/F 修正磁盘错误。需要注意的是从其它应用程序(如Windows等)运行CHKDSK时不要选此项。 (2)/V 磁盘检查时,显示每个目录下的文件。 四、帮助信息的获取 如果不知道CHKDSK命令的用法也没关系,在DOS下随时打入CHKDSK/?便可了解其用法。 五、关于CHKDSK命令的注释 (1)状态报告的形式 MS-DOS按类似下列的形式显示CHKDSK的状态报告: Volume MS-DOS_6 created 07-16-1996 10:40a Volume Serial Number is 2111-59F0 629,424,128 bytes total disk space 638,976 bytes in 15 hidden files 1,146,880 bytes in 70 directories 120,766,464 bytes in 1,802 user files 506,871,808 bytes available on disk (2)修正磁盘错误 在修正磁盘错误时,最好使用ScanDisk程序。详细信息可以参阅(SCANDISK)命令。用CHKDSK/F命令修正磁盘错误的显示信息如下: 10 lost allocation units found 3 chains convert lost chains to files? 若按下Y,MS-DOS把每个丢失的链在根目录中以FILEnnnn .CHK形式的文件名存放文件,nnnn是从0000开始的数字。CHKDSK检查结束后,可以检查一下这些文件是否含有所需要的数据,如果有就可以对其进行编辑后使用,否则便可将其全部删除,以免占用磁盘空间。若选N,MS-DOS只修正磁盘,但不保存丢失的分配单元的内容。 如果不用/F开关项,CHKDSK将出示信息提醒用户是否文件需要修正恢复,但不进行实际的错误修正工作。 (3)ERRORLEVER参数 若CHKDSK没有找到任何错误,则返回到ERRORLEVER的值为0。如果找到了一个或多个错误,返回时ERRORLEVER的值为255。
损坏文件怎么办??
关于chkdsk这个命令的使用问题
以下文字为百度知道Ctangel总结整理,均为日常工作中所遇到的已经经过证实的方法,并非网络复制的纯理论的东西。有想转载请注明出处,谢谢合作。
相信很多网友在电脑使用过程中收到过这样的提示,任务栏右下角出来一个小提示,说你的某个文件已经损坏,请运行chkdsk修复。其实这个工具是很强大的,不过不好意思对此类问题无效。
那么遇到这个问题该如何解决和这个chkdsk到底能干什么用请看我下面阐述。
一、遇到任务栏右下角提示有文件损坏要求运行chkdsk修复的情况
比如我的机器提示C:\Documents and Settings\pifd\Local Settings\Application Data\Microsoft\Outlook\test.mxl这个文件损坏,这种情况的产生有三种可能:
1、非正常关机
2、病毒造成的破坏
3、硬盘问题(经常频繁的出现不同的文件损坏就可以判定为硬盘有坏道了)
这个问题的解决方法是直接进入那个目录,删除那个文件,比如我举的这个例子,我就直接打开我的电脑点进C:\Documents and Settings\pifd\Local Settings\Application Data\Microsoft\Outlook\这个目录里,把test.mxl删掉 就好了。可是问题来了,一般它报的文件基本上都在系统的配置文件夹里,Local Settings这一层目录是隐藏的,那么您可以选择在我的电脑的地址栏里面直接输入整个目录然后回车就可以进去了,或者我的电脑之后点击工具-文件夹选项-查看 里面有两个设置 隐藏受保护的系统文件 前面的勾去掉,在选择下面的显示所有文件,然后应用确定就可以看到隐藏文件了。
一般情况下删除完有问题的文件是不会造成软件故障的,因为它损坏的多半是备份文件或者配置文件这类随软件启动就会改写的文件。如果影响了该软件使用,那么重新安装这个软件就好了。
二、CHKDSK这个命令到底能干什么用?
这个工具其实挺强大的,可以用来修复磁盘或者卷的问题。我还遇到过机器运行特别慢,重做系统后过了一个月半个月的又特别慢的情况然后用这个命令修复好了。
这个命令的使用,前提是你的系统里这个目录下windows\system32\autochk.exe有这个文件。不然该命令无法运行。
下面举例该命令的使用方法
1、机器开机蓝屏0X000000ED
这个蓝屏代码是典型的硬盘或者卷的问题造成的蓝屏,一般到这时候安全模式也进不去了。那么这个问题怎么修复呢,这时候最古老的系统安装盘就起作用了,是原版的安装盘哦,可不是ghost的那种,把光盘放入到光驱,引导启动系统安装,到安装界面的时候选择按R进入控制台修复,进入控制台之后会停在 C:\windows\提示符下,这里我们就输入 chkdsk -r就可以开始修复错误了,中间会有一段时间运行特别慢,根本就不动,这时候一定要耐心等待千万不要以为是死机了而重新启动,修复完成后重新启动计算机,就可以进入系统了,进入之后建议先杀毒,然后重新启动测试,如果重新启动就不会再出了,那就是卷的问题,如果还出这个代码,那说明硬盘有坏道了,硬件问题,可以换硬盘,或者把初始删除分成一个小区不使用。
2、这个命令参数很多 /F /R如何选择
系统出问题会提示你用chkdsk /F 修复,但是我要告诉你,请用/R,因为/R这个参数包含/F的功能,/F修不好的时候/R或许能管用,所以不要浪费时间直接用参数R。
3、使用chkdsk修复的时候提示修复无法完成
至今我只遇到过一次,问题比较严重,就是那个机器运行慢的,这时候可以尝试不带任何参数的线运行chkdsk。让它检测一遍如果它能检测完,就可以加上参数/R 了,如果还不行,那么在不带参数运行之后再加上/F 运行一次。
4、其他
其实除了0X000000ED之外还有一些硬盘引起的蓝屏代码是可以用这个命令修复的。但并不像0X000000ED那样100%管用。
如果你没有系统盘装盘也没有关系,现在有些PE就带控制台修复,比如很古老的深山红叶,还有金手指V6启动界面上就有这项的。不过运行pe进入控制台修复的时候默认的C盘可是pe的系统盘哦,至于哪个是你的C盘自己找吧,可能是D盘也可能是E盘,在目前提示符下输入D:或者E:回车,然后输入dir能列出目录的就不是,报错的就是。
在系统里面运行这个命令。点击开始,运行,输入cmd。在弹出的command窗口中输入 chkdsk空格(你想要检测的盘符比如D盘就输入D:空格 -r 然后回车。
vb做的软件如何获得自己的版本号?
如果你用的是vb6,而且指的是你在编译程序的时候写的版本号,比如1.0.1可以用app的属性得到
MsgBox App.Major & "." & App.Minor & "." & App.Revision
其中major是主版本,minor是次版本,revision是修正
在.net中会比较麻烦点,参考下面
Type FileInfo
wLength As Integer
wValueLength As Integer
szKey As String * 16
dwSignature As Long
dwStrucVersion As Long
dwFileVersionMS As Long
dwFileVersionLS As Long
End Type
' NOTE: The following Declare statements are case sensitive.
Declare Function GetFileVersionInfo& Lib "Version" _
Alias "GetFileVersionInfoA" (ByVal FileName$, _
ByVal dwHandle&, ByVal cbBuff&, ByVal lpvData$)
Declare Function GetFileVersionInfoSize& Lib "Version" Alias _
"GetFileVersionInfoSizeA" (ByVal FileName$, dwHandle&)
Declare Sub hmemcpy Lib "Kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, hpvSource As Any, ByVal cbBytes&)
Function LOWORD(x As Long) As Integer
LOWORD = x And &HFFFF&
' Low 16 bits contain Minor revision number.
End Function
Function HIWORD(x As Long) As Integer
HIWORD = x \ &HFFFF&
' High 16 bits contain Major revision number.
End Function
'----------------------------------------
'以下为执行模块,在 VBE 界面按 F5 执行
'----------------------------------------
Function displayVersion()
Dim x As FileInfo
Dim FileVer As String
Dim FileName As String
Dim dwHandle&, BufSize&, lpvData$, R&
'*** Get Version Information If Available ****
FileVer = ""
'FileName = 路径
FileName = Environ("windir") & "\system32\msjet40.dll"
BufSize& = GetFileVersionInfoSize(FileName, dwHandle&)
If BufSize& = 0 Then
MsgBox "Invalid File Name or no Version information available"
Exit Function
End If
lpvData$ = Space$(BufSize&)
R& = GetFileVersionInfo(FileName, dwHandle&, BufSize&, lpvData$)
hmemcpy x, ByVal lpvData$, Len(x)
'**** Parse File Version Number ****
FileVer = Trim$(Str$(HIWORD(x.dwFileVersionMS))) + "."
FileVer = FileVer + Trim$(Str$(LOWORD(x.dwFileVersionMS))) + "."
FileVer = FileVer + Trim$(Str$(HIWORD(x.dwFileVersionLS))) + "."
FileVer = FileVer + Trim$(Str$(LOWORD(x.dwFileVersionLS)))
MsgBox FileVer, 64, "Version of " & FileName
End Function
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Luckeryin/archive/2008/11/10/3269417.aspx
vb程序中如何获取程序运行的时间(本身程序)
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Dim sTime&, t%, vHou%, vMin%, vSec%
Private Sub Form_Load()
sTime = GetTickCount
Timer1.Interval = 500
Call rTime
End Sub
Private Sub Timer1_Timer()
Call rTime
End Sub
Sub rTime()
t = (GetTickCount - sTime) / 1000
vHou = Int(t / 3600)
vMin = (t - vHou) \ 60
vSec = Int(t - vHou - vMin)
Me.Caption = "程序已运行 " & IIf(Len(CStr(vHou)) = 1, "0" & vHou, vHou) & ":" & IIf(Len(CStr(vMin)) = 1, "0" & vMin, vMin) & ":" & IIf(Len(CStr(vSec)), "0" & vSec, vSec)
End Sub
窗体上放一Timer控件