用VB的CommonDialog控件“打开”对话框选中的文件,怎样判断所选中文件的大小?

时间:2022-11-01 16:10:09
用VB的CommonDialog控件ShowOpen“打开”对话框选中的文件,怎样判断所选中文件的大小?

21 个解决方案

#1


先把以前的帖子结了再说

#2


结了,给40分。

#3


读取文件属性
如果你熟悉API的话,直接调用API更好。

#4


Me.Caption = FileLen(CommonDialog1.FileName)

#5


用得着API么?
大脖子,FileLen可是基本的函数

引用 3 楼 ybh37 的回复:
读取文件属性
如果你熟悉API的话,直接调用API更好。

#6


坐等结贴

#7


3楼你好,我对API不熟,请你给出使用API,判断CommonDialog1选中图像文件尺寸<20kb,而且分辨率<320*240的代码,谢谢!

#9


dbcontrols朋友,你好:
     1、我必须得用CommonDialog1对话框,当选中的图像文件尺寸<20kb,而且分辨率<320*240时可以在image控件里显示该图片,否则提示并清除影像框,请问用API好还是函数FileLen()好?
     2、你给的http://zhidao.baidu.com/question/114458391.html那些代码,会出现对话框来选择文件吗?
     3、麻烦你给段符合我需求的API代码,谢谢!

#10


FileLen可以判断

FileLen 函数
      

返回一个 Long,代表一个文件的长度,单位是字节。

语法

FileLen(pathname)

必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明

当调用 FileLen 函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小。

注意 若要取得一个打开文件的长度大小,使用 LOF 函数。

#11


FileLen()好
这还用说?
CommonDialog1.ShowOpen后面加
Msgbox FileLen(CommonDialog1.FileName)
就是你要的

引用 9 楼 jyq001 的回复:
dbcontrols朋友,你好:
  1、我必须得用CommonDialog1对话框,当选中的图像文件尺寸<20kb,而且分辨率<320*240时可以在image控件里显示该图片,否则提示并清除影像框,请问用API好还是函数FileLen()好?
  2、你给的http://zhidao.baidu.com/question/114458391.html那些代码,会出现对话框来选择文件吗?
……

#12


谢谢你,dbcontrols:
用FileLen(filename)能判断文件尺寸,但如何判断分辨率<320*240呢? 

#13


这个需要API读文件头的信息

引用 12 楼 jyq001 的回复:
谢谢你,dbcontrols:
用FileLen(filename)能判断文件尺寸,但如何判断分辨率<320*240呢?

#15


我用如下代码,怎么文件在20K以内还是大于20,都能显示,而且不提示信息?问题在哪?
If Len(.FileName) > 0 And Len(.FileName) <= 20480 Then  '20KB以内。
    ImgLogo.Picture = LoadPicture(.FileName)
Else
    MsgBox "图像文件超过20K,请重新选择。"
    imgLogo.Picture = LoadPicture("") 
End If

#16


Option Explicit 

Private Type BITMAPINFOHEADER '40 bytes 
 biSize As Long 
 biWidth As Long 
 biHeight As Long 
 biPlanes As Integer 
 biBitCount As Integer 
 biCompression As Long 
 biSizeImage As Long 
 biXPelsPerMeter As Long 
 biYPelsPerMeter As Long 
 biClrUsed As Long 
 biClrImportant As Long 
End Type 

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 

Private Sub Command1_Click() 
 Dim FileName As String 
 Dim bmpData() As Byte 
 Dim bmp_info As BITMAPINFOHEADER 
  
 FileName = InputBox("请输入 BMP 图片路径和文件名", "提取文件信息") 
 If FileName = "" Then 
 FileName = "C:\WINDOWS\Web\Wallpaper\Bliss.bmp" 
 End If 
  
 If Dir(FileName, vbNormal) = "" Then 
 MsgBox "BMP 文件不存在" 
 Exit Sub 
 End If 
  
 Open FileName For Binary As #1 
 ReDim bmpData(LOF(1) - 1) As Byte 
 Get #1, , bmpData 
 Close #1 
  
 CopyMemory bmp_info, bmpData(14), LenB(bmp_info) 
  
 MsgBox "BMP 文件分辨率为:" & CStr(bmp_info.biWidth) & " * " & CStr(bmp_info.biHeight) 
 MsgBox "BMP 文件为" & CStr(bmp_info.biBitCount) & "位色" 
End Sub

#17


谢谢你!dbcontrols:
1、Private Type BITMAPINFOHEADER '40 bytes。这一句中什么意思?40字吗?
2、能在CommonDialog中直接套用上述API代码吗?
3、怎样在上述API代码中加入检测文件大小不大于20KB的语句?

#18


引用 10 楼 veron_04 的回复:
FileLen可以判断

FileLen 函数
   

返回一个 Long,代表一个文件的长度,单位是字节。

语法

FileLen(pathname)

必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明

当调用 FileLen 函数时,如果所指定的文件已经打开,则返回的值是这个文件在……

记得结贴哦

#19


我用如下代码,判断图像文件大于0k切小于20kb,但不论什么情况都提示信息,问题在哪?
If Len(.FileName) > 0 And Len(.FileName) <= 20480 Then
   ImgLogo.Picture = LoadPicture(.FileName)
Else
   MsgBox "图像不合要求,请重新选择。"
   imgLogo.Picture = LoadPicture("")  
End If
 

#20


引用 19 楼 jyq001 的回复:
我用如下代码,判断图像文件大于0k切小于20kb,但不论什么情况都提示信息,问题在哪?
If Len(.FileName) > 0 And Len(.FileName) <= 20480 Then
  ImgLogo.Picture = LoadPicture(.FileName)
Else
  MsgBox "图像不合要求,请重新选择。"
  imgLogo.Picture = Loa……


文件长度大于20K不是你那么表示的,Len(.FileName) 不过返回文件名的长度,FIleLen(.FileName)才是
看清楚了吧。。。上面的回答了那么多,你竟然不仔细看看。

#21


谢谢楼上各位朋友,尤其感谢dbcontrols。

#1


先把以前的帖子结了再说

#2


结了,给40分。

#3


读取文件属性
如果你熟悉API的话,直接调用API更好。

#4


Me.Caption = FileLen(CommonDialog1.FileName)

#5


用得着API么?
大脖子,FileLen可是基本的函数

引用 3 楼 ybh37 的回复:
读取文件属性
如果你熟悉API的话,直接调用API更好。

#6


坐等结贴

#7


3楼你好,我对API不熟,请你给出使用API,判断CommonDialog1选中图像文件尺寸<20kb,而且分辨率<320*240的代码,谢谢!

#8


#9


dbcontrols朋友,你好:
     1、我必须得用CommonDialog1对话框,当选中的图像文件尺寸<20kb,而且分辨率<320*240时可以在image控件里显示该图片,否则提示并清除影像框,请问用API好还是函数FileLen()好?
     2、你给的http://zhidao.baidu.com/question/114458391.html那些代码,会出现对话框来选择文件吗?
     3、麻烦你给段符合我需求的API代码,谢谢!

#10


FileLen可以判断

FileLen 函数
      

返回一个 Long,代表一个文件的长度,单位是字节。

语法

FileLen(pathname)

必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明

当调用 FileLen 函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小。

注意 若要取得一个打开文件的长度大小,使用 LOF 函数。

#11


FileLen()好
这还用说?
CommonDialog1.ShowOpen后面加
Msgbox FileLen(CommonDialog1.FileName)
就是你要的

引用 9 楼 jyq001 的回复:
dbcontrols朋友,你好:
  1、我必须得用CommonDialog1对话框,当选中的图像文件尺寸<20kb,而且分辨率<320*240时可以在image控件里显示该图片,否则提示并清除影像框,请问用API好还是函数FileLen()好?
  2、你给的http://zhidao.baidu.com/question/114458391.html那些代码,会出现对话框来选择文件吗?
……

#12


谢谢你,dbcontrols:
用FileLen(filename)能判断文件尺寸,但如何判断分辨率<320*240呢? 

#13


这个需要API读文件头的信息

引用 12 楼 jyq001 的回复:
谢谢你,dbcontrols:
用FileLen(filename)能判断文件尺寸,但如何判断分辨率<320*240呢?

#14


#15


我用如下代码,怎么文件在20K以内还是大于20,都能显示,而且不提示信息?问题在哪?
If Len(.FileName) > 0 And Len(.FileName) <= 20480 Then  '20KB以内。
    ImgLogo.Picture = LoadPicture(.FileName)
Else
    MsgBox "图像文件超过20K,请重新选择。"
    imgLogo.Picture = LoadPicture("") 
End If

#16


Option Explicit 

Private Type BITMAPINFOHEADER '40 bytes 
 biSize As Long 
 biWidth As Long 
 biHeight As Long 
 biPlanes As Integer 
 biBitCount As Integer 
 biCompression As Long 
 biSizeImage As Long 
 biXPelsPerMeter As Long 
 biYPelsPerMeter As Long 
 biClrUsed As Long 
 biClrImportant As Long 
End Type 

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 

Private Sub Command1_Click() 
 Dim FileName As String 
 Dim bmpData() As Byte 
 Dim bmp_info As BITMAPINFOHEADER 
  
 FileName = InputBox("请输入 BMP 图片路径和文件名", "提取文件信息") 
 If FileName = "" Then 
 FileName = "C:\WINDOWS\Web\Wallpaper\Bliss.bmp" 
 End If 
  
 If Dir(FileName, vbNormal) = "" Then 
 MsgBox "BMP 文件不存在" 
 Exit Sub 
 End If 
  
 Open FileName For Binary As #1 
 ReDim bmpData(LOF(1) - 1) As Byte 
 Get #1, , bmpData 
 Close #1 
  
 CopyMemory bmp_info, bmpData(14), LenB(bmp_info) 
  
 MsgBox "BMP 文件分辨率为:" & CStr(bmp_info.biWidth) & " * " & CStr(bmp_info.biHeight) 
 MsgBox "BMP 文件为" & CStr(bmp_info.biBitCount) & "位色" 
End Sub

#17


谢谢你!dbcontrols:
1、Private Type BITMAPINFOHEADER '40 bytes。这一句中什么意思?40字吗?
2、能在CommonDialog中直接套用上述API代码吗?
3、怎样在上述API代码中加入检测文件大小不大于20KB的语句?

#18


引用 10 楼 veron_04 的回复:
FileLen可以判断

FileLen 函数
   

返回一个 Long,代表一个文件的长度,单位是字节。

语法

FileLen(pathname)

必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明

当调用 FileLen 函数时,如果所指定的文件已经打开,则返回的值是这个文件在……

记得结贴哦

#19


我用如下代码,判断图像文件大于0k切小于20kb,但不论什么情况都提示信息,问题在哪?
If Len(.FileName) > 0 And Len(.FileName) <= 20480 Then
   ImgLogo.Picture = LoadPicture(.FileName)
Else
   MsgBox "图像不合要求,请重新选择。"
   imgLogo.Picture = LoadPicture("")  
End If
 

#20


引用 19 楼 jyq001 的回复:
我用如下代码,判断图像文件大于0k切小于20kb,但不论什么情况都提示信息,问题在哪?
If Len(.FileName) > 0 And Len(.FileName) <= 20480 Then
  ImgLogo.Picture = LoadPicture(.FileName)
Else
  MsgBox "图像不合要求,请重新选择。"
  imgLogo.Picture = Loa……


文件长度大于20K不是你那么表示的,Len(.FileName) 不过返回文件名的长度,FIleLen(.FileName)才是
看清楚了吧。。。上面的回答了那么多,你竟然不仔细看看。

#21


谢谢楼上各位朋友,尤其感谢dbcontrols。