精华内容
下载资源
问答
  • vb制作字符计数

    2014-03-30 11:24:23
    这是一个我自制的字符计数软件,可以供学习参考。
  • 利用static定义一个静态变量,实现在一个过程中累计计数的功能。 关键技术 静态变量 在一个过程中定义变量时,如果使用Dim关键词,那么该变量的“存活期”是其所属过程内,如果使用Static关键词定义变量,那么该...

    实例说明

    利用static定义一个静态变量,实现在一个过程中累计计数的功能。

    图片

    关键技术

    静态变量

    在一个过程中定义变量时,如果使用Dim关键词,那么该变量的“存活期”是其所属过程内,如果使用Static关键词定义变量,那么该变量的“存活期”是所有时间。

    设计过程

    1,按照下图设计界面

    在这里插入图片描述

    2,编写程序代码

    Private Sub Command1_Click()    
      Static i As Integer    
      i = i + 1    
      Print "第" & i & "次点击"
    End Sub
    
    Private Sub Command2_Click()    
      Me.Cls
    End Sub
    

    3,运行程序,单击“计数”按钮,观察效果

    图片

    思考

    Dim与Static区别?

    通过这个程序,我们可以发现Static定义一个变量后,其变量的值不会因为过程的完成而被初始化,其在内存中是一直存在的,除非程序被关闭。相反,使用Dim定义的变量,其值只存在过程之中,当过程结束时,其值就会被系统收回。

    过程中Static定义变量和窗体模块中Dim定义变量的区别?

    实际上,两者之间的唯一区别是,在窗体模块中使用Dim定义的变量,可以被该窗体中的所有过程使用。而使用Static在过程中定义的变量,只能在该过程中使用,不可以被其它过程使用。例如,将上面例子改为下面这样,那么可以在“清空”按钮事件中使用变量j。

    图片

    展开全文
  • asp.net vb access 计数

    2010-03-27 14:14:50
    asp.net vb access 计数 asp.net vb access 计数
  • vb 导出整数 科学计数法Problem statement: 问题陈述: Given two positive integer n and m, find how many arrays of size n that can be formed such that: 给定两个正整数n和m ,找出可以形成多少个大小为n的...

    vb 导出整数 科学计数法

    Problem statement:

    问题陈述:

    Given two positive integer n and m, find how many arrays of size n that can be formed such that:

    给定两个正整数nm ,找出可以形成多少个大小为n的数组:

    1. Each element of the array is in the range [1, m]

      数组的每个元素都在[1,m]范围内

    2. Any adjacent element pair is divisible, i.e., that one of them divides another. Either element A[i] divides A[i + 1] or A[i + 1] divides A[i].

      任何相邻的元素对都是可分割的 ,即,其中一个元素对另一个元素 。 元素A [i]除以A [i + 1]A [i + 1]除以A [i]

    Input:

    输入:

    Only one line with two integer, n & m respectively.

    只有一行包含两个整数,分别为nm

    Output:

    输出:

    Print number of different possible ways to create the array. Since the output could be long take modulo 10^9+7.

    打印创建数组的各种可能方式的数量。 由于输出可能很长,取模10 ^ 9 + 7

    Constraints:

    限制条件:

    1<=n, m<=100
    
    

    Example:

    例:

        Input: 
        n = 3, m = 2.
        
        Output: 
        8
        
        Explanation:
        {1,1,1},{1, 1, 2}, {1, 2, 1}, 
        {1, 2, 2}, {2, 1, 1},
        {2,1,2},  {2,2,1}, {2,2,2} are possible arrays.
    
        Input: 
        n = 1, m = 5.
        
        Output: 
        5
        Explanation:
        {1}, {2}, {3}, {4}, {5}
    
    

    Solution Approach:

    解决方法:

    The above problem is a great example of recursion. What can be the recursive function and how we can formulate.

    上面的问题是递归的一个很好的例子。 什么是递归函数,以及我们如何公式化。

    Say,

    说,

    Let

    F(n, m) = number of ways for array size n and range 1 to m

    F(n,m) =数组大小为n且范围为1到m的路径数

    Now,

    现在,

    We actually can try picking every element from raging 1 to m and try recurring for other elements

    实际上,我们可以尝试从1m范围内选取每个元素,然后尝试对其他元素进行重复

    So, the function can be written like:

    因此,该函数可以这样写:

    Function: NumberofWays(cur_index,lastelement,n,m)
    
    

    So, to describe the arguments,

    因此,为了描述这些论点,

    cur_index is your current index and the last element is the previous index value assigned. So basically need to check which value with range 1 to m fits in the cur_index such that the divisibility constraint satisfies.

    cur_index是当前索引,最后一个元素是分配的前一个索引值。 因此,基本上需要检查范围在1到m之间的哪个值适合cur_index ,以便除数约束满足。

    So, to describe the body of the function

    因此,要描述功能的主体

    Function NumberofWays(cur_index,lastelement,n,m)    
        // formed the array completely
        if(cur_index==n)
            return 1;
        sum=0
        
        // any element in the range
        for j=1 to m 
            // if divisible then lastelement,
            // j can be adjacent pair
            if(j%lastelement==0 || lastelement%j==0)
                // recur for rest of the elments
                sum=(sum%MOD+ NumberofWays(cur_index+1,j,n,m)%MOD)%MOD; 
            end if
        end for
    End function
    
    

    Now the above recursive function generates many overlapping sub-problem and that's why we use the top-down DP approach to store already computed sub-problem results.
    Below is the implementation with adding memoization.

    现在,上面的递归函数会生成许多重叠的子问题,这就是为什么我们使用自上而下的DP方法来存储已经计算出的子问题结果的原因。
    下面是添加备忘录的实现。

    Initiate a 2D DP array with -1

    使用-1启动2D DP阵列

    Function NumberofWays(cur_index,lastelement,n,m)
        // formed the array completely
        if(cur_index==n)
            return 1;
        // if solution to sub problem already exits
        if(dp[cur_index][lastelement]!=-1) 
            return dpdp[cur_index][lastelement];    
        sum=0
        for j=1 to m // any element in the range
            // if divisible then lastelement,j can be adjacent pair
            if(j%lastelement==0 || lastelement%j==0)
                // recur for rest of the elments
                sum=(sum%MOD+ NumberofWays(cur_index+1,j,n,m)%MOD)%MOD; 
            end if
        end for
        Dp[curindex][lastelement]=sum
        Return Dp[curindex][lastelement] 
    End function
    
    

    C++ Implementation:

    C ++实现:

    #include <bits/stdc++.h>
    using namespace std;
    
    #define MOD 1000000007
    
    int dp[101][101];
    
    int countarray(int index, int i, int n, int m)
    {
        // if solution to sub problem already exits
        if (dp[index][i] != -1)
            return dp[index][i];
    
        if (index == n)
            return 1;
        int sum = 0;
    
        //any element in the range
        for (int j = 1; j <= m; j++) {
            // if divisible then i,j can be adjacent pair
            if (j % i == 0 || i % j == 0) {
                // recur for rest of the elments
                sum = (sum % MOD + countarray(index + 1, j, n, m) % MOD) % MOD;
            }
        }
        dp[index][i] = sum;
        return dp[index][i];
    }
    
    int main()
    {
        int n, m;
    
        cout << "Enter value of n:\n";
        cin >> n;
        cout << "Enter value of m:\n";
        cin >> m;
    
        // initialize DP matrix
        for (int i = 0; i <= n; i++) {
            for (int j = 0; j <= m; j++) {
                dp[i][j] = -1;
            }
        }
    
        cout << "number of ways are: " << countarray(0, 1, n, m) << endl;
    
        return 0;
    }
    
    

    Output:

    输出:

    Enter value of n:
    3
    Enter value of m:
    2
    number of ways are: 8
    
    
    

    翻译自: https://www.includehelp.com/icp/count-of-divisible-array.aspx

    vb 导出整数 科学计数法

    展开全文
  • 基数排序、桶排序和计数排序的区别

    万次阅读 多人点赞 2018-08-08 23:51:17
    计数排序本质上是一种特殊的桶排序,当桶的个数最大的时候,就是计数排序。 3.基数排序 是一种非比较排序算法,时间复杂度是 O(n) 。它的主要思路是, 1. 将所有待排序整数(注意,必须是非负整数)统一为位数相同...

    1.桶排序(Bucket Sort)

    基本思路是:

    1.  将待排序元素划分到不同的痛。先扫描一遍序列求出最大值 maxV 和最小值 minV ,设桶的个数为 k ,则把区间 [minV, maxV] 均匀划分成 k 个区间,每个区间就是一个桶。将序列中的元素分配到各自的桶。
    2. 对每个桶内的元素进行排序。可以选择任意一种排序算法。
    3.  将各个桶中的元素合并成一个大的有序序列。
    4. 假设数据是均匀分布的,则每个桶的元素平均个数为 n/k 。假设选择用快速排序对每个桶内的元素进行排序,那么每次排序的时间复杂度为 O(n/klog(n/k)) 。总的时间复杂度为 O(n)+O(k)O(n/klog(n/k)) = O(n+nlog(n/k)) = O(n+nlogn-nlogk 。当 k 接近于 n 时,桶排序的时间复杂度就可以金斯认为是 O(n) 的。即桶越多,时间效率就越高,而桶越多,空间就越大。

    2.计数排序(Counting Sort)

    是一种O(n)的排序算法,其思路是开一个长度为 maxValue-minValue+1 的数组,然后

    1. 分配。扫描一遍原始数组,以当前值- minValue 作为下标,将该下标的计数器增1。
    2. 收集。扫描一遍计数器数组,按顺序把值收集起来。

    举个例子, nums=[2, 1, 3, 1, 5] , 首先扫描一遍获取最小值和最大值, maxValue=5 , minValue=1 ,于是开一个长度为5的计数器数组 counter ,
    1. 分配。统计每个元素出现的频率,得到 counter=[2, 1, 1, 0, 1] ,例如 counter[0] 表示值 0+minValue=1 出现了2次。
    2. 收集。 counter[0]=2 表示 1 出现了两次,那就向原始数组写入两个1, counter[1]=1 表示 2 出现了1次,那就向原始数组写入一个2,依次类推,最终原始数组变为 [1,1,2,3,5] ,排序好了。

    计数排序本质上是一种特殊的桶排序,当桶的个数最大的时候,就是计数排序。

    3.基数排序

    是一种非比较排序算法,时间复杂度是 O(n) 。它的主要思路是,
    1. 将所有待排序整数(注意,必须是非负整数)统一为位数相同的整数,位数较少的前面补零。一般用10进制,也可以用16进制甚至2进制。所以前提是能够找到最大值,得到最长的位数,设 k 进制下最长为位数为 d 。
    2. 从最低位开始,依次进行一次稳定排序。这样从最低位一直到最高位排序完成以后,整个序列就变成了一个有序序列。
    举个例子,有一个整数序列,0, 123, 45, 386, 106,下面是排序过程:

    1. 第一次排序,个位,000 123 045 386 106,无任何变化
    2. 第二次排序,十位,000 106 123 045 386
    3. 第三次排序,百位,000 045 106 123 386
    4. 最终结果,0, 45, 106, 123, 386, 排序完成。
    • 为什么同一数位的排序子程序要用稳定排序?因为稳定排序能将上一次排序的成果保留下来。例如十位数的排序过程能保留个位数的排序成果,百位数的排序过程能保留十位数的排序成果。能不能用2进制?能,可以把待排序序列中的每个整数都看成是01组成的二进制数值。那这样的话,岂不是任意一个非负整数序列都可以用基数排序算法?理论上是的,假设待排序序列中最大整数为2 4 . 1,则最大位数 d=64 ,时间复杂度为 O(64n) 。可见任意一个非负整数序列都可以在线性时间内完成排序。
    • 既然任意一个非负整数序列都可以在线性时间内完成排序,那么基于比较排序的算法有什么意义呢?基于比较的排序算法,时间复杂度是 O(nlogn) ,看起来比 O(64n) 慢,仔细一想,其实不是, O(nlogn) 只有当序列非常长,达到2 个元素的时候,才会与 O(64n) 相等,因此,64这个常数系数太大了,大部分时候, n 远远小于2 ,基于比较的排序算法还是比 O(64n) 快的。
    • 当使用2进制时, k=2 最小,位数 d 最大,时间复杂度 O(nd) 会变大,空间复杂度 O(n+k) 会变小。当用最大值作为基数时, k=maxV 最大, d=1 最小,此时时间复杂度 O(nd) 变小,但是空间复杂度 O(n+k) 会急剧增大,此时基数排序退化成了计数排序。

    先比较时间复杂度和空间复杂度。



    其中, d 表示位数, k 在基数排序中表示 k 进制,在桶排序中表示桶的个数, maxV 和 minV 表示元
    素最大值和最小值。

    • 首先,基数排序和计数排序都可以看作是桶排序。
    • 计数排序本质上是一种特殊的桶排序,当桶的个数取最大( maxV-minV+1 )的时候,就变成了计数排序。
    • 基数排序也是一种桶排序。桶排序是按值区间划分桶,基数排序是按数位来划分;基数排序可以看做是多轮桶排序,每个数位上都进行一轮桶排序。
    • 当用最大值作为基数时,基数排序就退化成了计数排序。
    • 当使用2进制时, k=2 最小,位数 d 最大,时间复杂度 O(nd) 会变大,空间复杂度 O(n+k) 会变小。当用最大值作为基数时, k=maxV 最大, d=1 最小,此时时间复杂度 O(nd) 变小,但是空间复杂度 O(n+k) 会急剧增大,此时基数排序退化成了计数排序。
    展开全文
  • vb 文件夹内文件计数Article Update 13-March-2020: I removed the full source code and the code snippets. The article that remains should act as a "design roadmap" for members who want to write the code ...

    vb 文件夹内文件计数

    Article Update 13-March-2020: I removed the full source code and the code snippets. The article that remains should act as a "design roadmap" for members who want to write the code in the programming language of your choice. If you are interested in discussing the program further, please contact me via the EE message system. 文章更新2020年3月13日:我删除了完整的源代码和代码片段。 对于希望用您选择的编程语言编写代码的成员,剩下的文章应作为“设计路线图”。 如果您有兴趣进一步讨论该程序,请通过EE消息系统与我联系。 INTRODUCTION 介绍

    This article was inspired by a recent question here at Experts Exchange. In response to that, I wrote a "quick-and-dirty" script that performs the function requested by the Original Poster, but it has numerous shortcomings. This article describes a major revision of that script, which addresses the shortcomings in the original one.

    本文的灵感来自于Experts Exchange上一个最近的问题 。 对此,我编写了一个“快速且肮脏”的脚本,该脚本执行了原始海报所要求的功能,但是它有许多缺点。 本文介绍了该脚本的主要修订版,该修订版解决了原始脚本中的缺点。

    PROBLEM DESCRIPTION 问题描述

    The objective is to report a count of the files, for each file type (file extension), in a folder and all of its subfolders. In addition, the report should contain the total size of all files for each file type. Example:

    目的是报告文件夹及其所有子文件夹中每种文件类型(文件扩展名)的文件计数。 此外,报告应包含每种文件类型的所有文件的总大小。 例:

    SOLUTION

    I wrote the original "quick-and-dirty" script in AutoHotkey, an excellent (free!) programming/scripting language. The quick explanation for installing AutoHotkey is to visit its website. A more comprehensive explanation is to read my EE article, AutoHotkey - Getting Started. After installation, AutoHotkey will own the AHK file type, supporting the solution discussed in the remainder of this article.

    我用AutoHotkey (一种出色的(免费!)编程/脚本语言)编写了原始的“快速处理”脚本。 安装AutoHotkey的快速说明是访问其网站 。 更全面的解释是阅读我的EE文章AutoHotkey-Getting Started 。 安装后,AutoHotkey将拥有AHK文件类型,支持本文其余部分讨论的解决方案。

    The new script improves upon the previous one in the following ways:

    新脚本在以下方面对上一个脚本进行了改进:

    o  The original script hard-codes the name of the source folder. The new script provides a standard Windows "Browse for Folder" dialog that allows the user to navigate to the folder (or type or copy/paste the folder name). o原始脚本对源文件夹的名称进行硬编码。 新脚本提供了标准的Windows“浏览文件夹”对话框,该对话框允许用户导航到文件夹(或键入或复制/粘贴文件夹名称)。 o  The original script saves the results in the same file, so the results are not preserved across multiple executions, unless the user manually saves the file. The new script saves the results in a file with the date and time of execution (including seconds) in the file name (yyyy-MM-dd_HH.mm.ss), so there are never duplicate or overwritten results files. o原始脚本将结果保存在同一文件中,因此除非用户手动保存文件,否则结果不会在多次执行中保留。 新脚本将结果保存到文件名中,文件名(yyyy-MM-dd_HH.mm.ss)中带有执行日期和时间(包括秒),因此不会重复或覆盖结果文件。 o  The original script saves the results in a simple text file. The new script saves the results in a CSV file that may be easily loaded into Excel for additional processing – sorting, formatting, printing, whatever. o原始脚本将结果保存在一个简单的文本文件中。 新脚本将结果保存在CSV文件中,可以轻松将其加载到Excel中以进行其他处理-排序,格式化,打印等。 o  The original script stores the results file in the source base folder. The new script stores the results file in the same folder where the script is located – a better choice. I considered allowing the user to select the folder (and even the file name), but decided not to complicate the process of entering parameters for the run. o原始脚本将结果文件存储在源基本文件夹中。 新脚本将结果文件存储在脚本所在的同一文件夹中–更好的选择。 我考虑过允许用户选择文件夹(甚至文件名),但决定不使输入运行参数的过程复杂化。 o  The original script always includes subfolders. The new script provides an option to include or exclude subfolders. o原始脚本始终包含子文件夹。 新脚本提供了包含或排除子文件夹的选项。 o  The original script does no error checking. The new script does extensive error checking. o原始脚本不进行错误检查。 新脚本进行了广泛的错误检查。 o  The original script terminates with a runtime error if there is a file type that contains a character which is invalid in AutoHotkey variable names (see the o如果某个文件类型包含一个在AutoHotkey变量名称中无效的字符,则原始脚本会因运行时错误而终止(请参见下面的“ GOOD NEWS AND BAD NEWS section below). The new script executes properly when these file types are present. 好消息和坏消息”部分)。 存在这些文件类型时,新脚本将正确执行。 HOW TO RUN THIS SCRIPT 如何运行此脚本

    Download the attached file called Counts-and-Sizes.ahk and simply double-click on it in Windows/File Explorer or whatever file manager you use. Since its file type is AHK, AutoHotkey will be launched to process it. If you prefer, the file may be turned into an executable via the AutoHotkey compiler, which is installed during the standard installation of AutoHotkey. If you right-click on an AHK file in Windows Explorer or whatever file manager you use, there will be a context menu pick called Compile Script:

    下载名为Counts-and-Sizes.ahk的附件 ,然后在Windows / File Explorer或使用的任何文件管理器中双击即可。 由于其文件类型为AHK,因此将启动AutoHotkey进行处理。 如果愿意,可以通过AutoHotkey编译器将文件转换为可执行文件,该编译器在标准安装AutoHotkey的过程中安装。 如果您在Windows资源管理器或您使用的任何文件管理器中右键单击AHK文件,将有一个名为“编译脚本”的上下文菜单选项:

    Select that menu item and it will create an EXE file, which is a stand-alone/no-install executable of the AHK script.

    选择该菜单项,它将创建一个EXE文件,该文件是AHK脚本的独立/无需安装的可执行文件。

    HOW THE SCRIPT WORKS 脚本的工作方式

    For those interested in understanding how the script works, the remainder of this article shows code snippets, with a description of what each snippet does, including screenshots where appropriate (this also acts as a form of documentation for the script).

    对于那些对理解脚本的工作原理感兴趣的人,本文的其余部分显示了代码段,并描述了每个代码段的功能,包括适当的屏幕截图(这也作为脚本文档的一种形式)。

    Code snippet:

    程式码片段:

    removed

    What it does: The

    它的作用:

    如果在未初始化或未分配值的情况下读取变量,则 #Warn statement provides a warning when a variable is read without having been initialized or assigned a value. The #Warn语句会提供警告。 SetBatchLines statement sets the script to run at maximum speed, i.e., no "sleeping" will occur in the script. SetBatchLines语句将脚本设置为以最大速度运行,即,脚本中不会发生“睡眠”。

    Code snippet:

    程式码片段:

    removed

    What it does: Asks the user to enter the full path of the source folder:

    它的作用:要求用户输入源文件夹的完整路径:

    It allows the user to navigate/browse to it or type/paste it in. It looks for an ending backslash on the path name and if one was not entered, it appends one (in other words, it works whether or not the user includes the ending backslash in the path). It then checks to see if a source folder was entered, and if so, if the folder exists. If either is not true, it gives the user the opportunity to exit or continue. Note: whether or not the source folder can be reported as null with the Browse For Folder dialog depends on the operating system, so the code checks for it. When the source folder is obtained, it creates a variable with the source files by appending *.* to the source folder.

    它允许用户浏览/浏览它或键入/粘贴它。它在路径名上寻找结尾的反斜杠,如果未输入,则附加一个(换句话说,不管用户是否包含,都可以使用)路径中的结尾反斜杠)。 然后,它检查是否已输入源文件夹,如果已输入,则是否存在该文件夹。 如果任何一个都不成立,它将为用户提供退出或继续的机会。 注意:是否可以在“ 浏览文件夹”对话框中将源文件夹报告为null取决于操作系统,因此代码会对其进行检查。 获取源文件夹后,它通过将*。*附加到源文件夹来创建带有源文件的变量。

    Code snippet:

    程式码片段:

    removed

    What it does: Asks if the user wants to include subfolders:

    功能:询问用户是否要包含子文件夹:

    removed

    What it does: Creates a file name to store the results. It includes the date and time to the second (ss), so there can never be a duplicate file name. It stores the file in the same folder where the script is located.

    作用:创建一个文件名来存储结果。 它包括第二秒(ss)的日期和时间,因此永远不会有重复的文件名。 它将文件存储在脚本所在的同一文件夹中。

    Code snippet:

    程式码片段:

    removed

    What it does: Initializes some variables for the first loop through the files. The

    它的作用:为通过文件的第一个循环初始化一些变量。 的

    BadVarName variables are discussed in the BadVarName变量将在本文后面的“ GOOD NEWS AND BAD NEWS section later in this article. 好消息和坏消息”部分中进行讨论。

    Code snippet:

    程式码片段:

    removed

    What it does: The script makes three loops through the folders/files. This is the first. Its purpose is to detect all of the file types and create/initialize a dynamic variable for each file type to store its count and size. This is discussed in detail in the

    它的作用:该脚本在文件夹/文件中进行三个循环。 这是第一个。 其目的是检测所有文件类型并为每种文件类型创建/初始化一个动态变量以存储其计数和大小。 这将在

    GOOD NEWS AND BAD NEWS section. 好消息和坏消息部分。

    Code snippet:

    程式码片段:

    removed

    What it does: This is the second loop through the folders/files. Since a dynamic variable for each file type was created/initialized in the first loop, this loop utilizes those variables by incrementing the count and size for each file found.

    它的作用:这是文件夹/文件的第二个循环。 由于每种文件类型的动态变量都是在第一个循环中创建/初始化的,因此该循环通过增加找到的每个文件的计数和大小来利用这些变量。

    Code snippet:

    程式码片段:

    removed

    What it does: Initializes some variables for the third loop. Writes out the header row for the Comma Separated Variable (CSV) results file, terminating with a fatal error if the append (write) operation gives a non-zero return code. The header looks like one of these two lines, depending on the choice of including/excluding subfolders:

    它的作用:为第三个循环初始化一些变量。 写出逗号分隔变量(CSV)结果文件的标题行,如果附加(写)操作给出的返回码非零,则以致命错误终止。 标题看起来像这两行之一,具体取决于包含/排除子文件夹的选择:

    File Type,Count,Size(bytes),Folder=D:\BaseFolder\ (with subfolders) 文件类型,计数,大小(字节),文件夹= D:\ BaseFolder \(带有子文件夹) File Type,Count,Size(bytes),Folder=D:\BaseFolder\ (without subfolders) 文件类型,计数,大小(字节),文件夹= D:\ BaseFolder \(不带子文件夹)

    Code snippet:

    程式码片段:

    removed

    What it does: The is the third and final loop through the folders/files. It appends a line to the

    它的作用:这是遍历文件夹/文件的第三个也是最后一个循环。 它将一行附加到

    每种文件类型的 CSV results file for each file type with its count and size (the OutputFlag variable ensures that only one line is appended for each file type), terminating with a fatal error if the append (write) operation gives a non-zero return code. CSV结果文件及其数量和大小(OutputFlag变量可确保每种文件类型仅附加一行),如果append(写)操作给出的返回码非零,则以致命错误终止。

    The CSV lines look like this:

    CSV行如下所示:

    ="jpg",1040,178585752

    =“ jpg”,1040,178585752

    ="rtf",9,6260767

    =“ rtf”,9,6260767

    ="pdf",673,694644678

    =“ pdf”,673,694644678

    ="docx",36,9087570

    =“ docx”,36,9087570

    ="html",249,11401711

    =“ html”,249,11401711

    ="bat",9,8866

    =“ bat”,9,8866

    *Other*,2,1954

    *其他*,2,1954

    ="class",3391,9249790

    =“ class”,3391,9249790

    ="webpage",1,112

    =“网页”,1,112

    ="0A1",1,17920

    =“ 0A1”,1,17920

    After loading the CSV results file into Excel, doing some formatting, sorting by the File Type column, and putting in a TOTAL row with SUM formulas for Count and Size, the Excel spreadsheet looks like this:

    将CSV结果文件加载到Excel中后,进行一些格式设置,按“文件类型”列进行排序,并在“总计”行中添加“计数”和“大小”的SUM公式,Excel电子表格如下所示:

    Code snippet:

    程式码片段:

    removed 
    

    What it does: Displays a dialog box with the fully qualified file name of the CSV results file:

    它的作用:显示一个对话框,其中包含CSV结果文件的标准文件名:

    After displaying this dialog, the script exits.

    显示此对话框后,脚本退出。

    GOOD NEWS AND BAD NEWS 好消息和坏消息

    In discussing the last code snippet, we get to the GOOD NEWS AND BAD NEWS section mentioned previously in the article. The good news is that the script does not require the user to specify in advance what file types to process. It takes advantage of a powerful AutoHotkey feature to create dynamically (at runtime) a variable with a name that is based on the contents of another variable. For example, consider the variables named:

    在讨论最后一个代码片段时,我们进入了本文前面提到的GOOD NEWS和BAD NEWS部分。 好消息是该脚本不需要用户预先指定要处理的文件类型。 它利用强大的AutoHotkey功能来(在运行时)动态创建一个变量,该变量的名称基于另一个变量的内容。 例如,考虑以下变量:

    Count_%FileExt%

    Count_%FileExt%

    Size_%FileExt%

    大小_%FileExt%

    If the variable %FileExt% contains the value PDF at runtime, then these variables have the names:

    如果变量%FileExt%在运行时包含值PDF ,则这些变量的名称为:

    Count_PDF

    计数_PDF

    Size_PDF

    大小_PDF

    This technique is used in the script to create dynamically Count and Size variables for every file type encountered during the search, without requiring the user to specify file types in advance.

    在脚本中使用此技术可为搜索过程中遇到的每种文件类型动态创建CountSize变量,而无需用户预先指定文件类型。

    The bad news is that some characters are valid in Windows file names but invalid in AutoHotkey variable names. The list of these characters may be seen in the code snippet below. For example, if the script encounters a file type of

    坏消息是某些字符在Windows文件名中有效,但在AutoHotkey变量名中无效。 这些字符的列表可以在下面的代码片段中看到。 例如,如果脚本遇到文件类型为

    ab!

    ab!

    and attempts to create the variables

    并尝试创建变量

    Count_ab!

    Count_ab!

    Size_ab!

    大小!

    it will terminate with a runtime error – that's what happens with the script I posted in the original question. So this new script checks every character in the file types that it finds and looks for "bad" characters, i.e., characters that would result in an invalid AutoHotkey variable name. When it finds them, it stores the counts and sizes in these variables:

    它会因运行时错误而终止–这就是我在原始问题中发布的脚本所发生的情况。 因此,此新脚本检查其找到的文件类型中的每个字符,并查找“错误”字符,即会导致无效的AutoHotkey变量名称的字符。 找到它们后,它将计数和大小存储在以下变量中:

    Count_BadVarName

    Count_BadVarName

    Size_BadVarName

    Size_BadVarName

    It reports these values in the results file with *Other* as the file type.

    它以* Other *作为文件类型在结果文件中报告这些值。

    More good news is that these characters are not found in most file types of interest, such as ahk, bat, csv, doc, docx, exe, flv, gif, htm, html, ico, java, kbd, lnk, m4v, nsi, opd, pdf, qt, rtf, sys, tif, tiff, uni, vbs, wma, xls, xlsx, y4m, zip (couldn't resist the A to Z approach).

    更好的消息是,在大多数感兴趣的文件类型中都找不到这些字符,例如ahk,bat,csv,doc,docx,exe,flv,gif,htm,html,ico,java,kbd,lnk,m4v,nsi ,opd,pdf,qt,rtf,sys,tif,tiff,uni,vbs,wma,xls,xlsx,y4m,zip(无法抵御A到Z的方法)。

    Code snippet:

    程式码片段:

    removed 
    

    What it does: This is a function that takes a file type as the input parameter and returns TRUE if any character is a "bad" one, i.e., if it contains any character that is invalid in an AutoHotkey variable name. Otherwise, it returns FALSE.

    作用:该函数将文件类型作为输入参数,如果任何字符为“不良”字符(即,如果其中包含在AutoHotkey变量名称中无效的任何字符),则返回TRUE 。 否则,它返回FALSE

    That's it! I hope this helps the Original Poster as well as other EE members.  If you find this article to be helpful, please click the thumbs-up icon below. This lets me know what is valuable for EE members and provides direction for future articles. Thanks very much! Regards, Joe

    而已! 我希望这对原始海报以及其他EE成员有所帮助。 如果您发现本文有帮助,请单击下面的大拇指图标。 这使我知道什么对EE成员有价值,并为以后的文章提供了指导。 非常感谢! 问候乔

    翻译自: https://www.experts-exchange.com/articles/12253/Count-and-Total-Size-by-File-Type.html

    vb 文件夹内文件计数

    展开全文
  • 最近在做一个德国的项目,拿到的实例程序里的HMI程序的...2- 准备下VB脚本 Sub VBCycle() Dim tempV tempV=SmartTags("Value") If tempV<3 Then tempV=tempV+1 'statements Else tempV=0 'statements En
  • If i = 1000 Or i = 2000 Or i = 3000 Or i = 4000 Then msgbox("提示") End If i是一个计数,从0到1000000 因为我要做成每1千的单位会提示一次 请问要怎么写呢?
  • 扫描比对计数功能

    2019-01-17 14:24:43
    VB.NET 写的很简单简单的扫描计数功能,仅用于初步学习
  • 计数排序-java

    2018-05-08 20:08:48
    public class 计数排序 { public static void main(String[] args) { // TODO Auto-generated method stub int []A = {1,5,3,6,4,2,9,8,7,0,5,8,5,5}; int []B = new int[14]; COUNYING_...
  • 电子秤计数采样软件VB源程序,计数电子称工业用,RS-232接口。
  • VB编程:Timer控件中使用计数变量-24

    千次阅读 2016-11-22 09:24:36
    运行效果: 程序代码: Private myint As Integer Private Sub Form_Load()  myint = 0 End Sub Private Sub Timer1_Timer()  myint = myint + 1  If myint = 2 Then Me.BackColor = vbGreen  If...
  • 超漂亮的VB界面控件集,下载源码包后,运行LAUNCH ME !!.vbg文件,即可编译生成,查看运行效果,示例演示多行vkTextBox文本框. 单击可以在窗口标题中显示当前行 !这个是另外的一行.  你还可以尝试 vkTextBox 文本...
  • Option Explicit Private Sub Command1_Click()   ... 'j用于计数,每次单击Command命令按钮加1。    If j &gt; 3 Then    MsgBox "只能运行3次"    Exit Sub  ...
  • vb 科学计数法显示数值

    千次阅读 2007-07-27 12:44:00
    用FORMAT只能用E代替10,例如Format(0.00001, "0#E+00")显示为10E-06,关于FORMAT可以参看FORMAT命令说明 字符 说明 无 显示没有格式的数值。
  • 本部分内容包括:归并、桶排、基数排序、计数排序 代码实现: 见我的github:排序(归并、桶排、基数排序、计数排序) 一、归并排序 设计思路 1、数组分成两段,每段去排序 2、排序时判断这两段是否越界,...
  • vb逆向常用函数

    2019-09-03 13:31:29
    e) VarCyFromStr (仅VB6库. 要调试,则在WINICE.DAT里必须有 OLEAUT32.DLL)字符串到变比型数据类型  f) VarBstrFromI2 (仅VB6库. 要调试,则在WINICE.DAT里必须有 OLEAUT32.DLL)整型数据到字符串: 2) ...
  • 非常典型的学生信息管理系统,VB编程 源代码
  • vb中如何把科学计数法转换成常规表

    千次阅读 2008-11-28 17:04:00
    vb中如何把科学计数法转换成常规表示的数值 问题点数:0、回复次数:2  1 楼 回复于 2001-06-28 18:13:36 得分 0 有一个方法是   Dim d As Variant 'Decimal   d = CDec(yournumber)   Decimal...
  • 输入一科学计数法形式字符串,如1234.5e-6 ;通过double atof()将其转换成double形的数据
  • 支持的功能: (1)支持串口设置:串口号,波特率,校验位,数据位,停止位 (2)支持字符格式发送和接收 (3)支持十六进制格式发送和接收 (4)支持将接收到的数据保存到文件 ...(8)支持发送和接收计数
  • 计数排序

    2018-11-12 17:32:37
    计数排序是假设输入的元素的每一个都是在[0,k]之前的一个整数。 排序的基本思想就是对每个输入的元素,统计小于这个元素的数量,下面是具体的C++的实现:首先将统计的数组全部置零,然后根据输入来统计每个输入的...
  • vb.net 固定小数点后位数

    千次阅读 2019-08-31 17:39:08
    先是从百度上看到的方法: Dim d As Double = 3.141592654 Dim s As String = d.ToString("F3")保留3位精度 后来再自己使用的时候 直接: txtroom_T.Text = "室温:" + (Room_T / 1000).ToString("F3") + " ℃" ...
  • 内容索引:VB源码,界面编程,界面控件 非常经典的VB常用图形界面控件包,包含近20种界面控件,含有示例文件。这些控件主要有:  vkCommand按钮控件(类似XP图标风格);  vkListBox列表框控件;  vkToggleButton计数...
  • VB 使用总结

    2019-11-26 16:22:30
    VB参考 官方文档 调用方法 function 参数1,参数2..... 清除单元格内容不清除公式 Worksheets("Sheet1").Range("a2:I1000000").SpecialCells(2).ClearContents 读取数据库表数据到excel表中 Dim rs As New ...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
     通用语言规范(Common Language Specification,CLS):.NET系统包括如下语言:C#、C++、VB、J#,他们都遵守通用语言规范。任何遵守通用语言规范的语言源程序,都可编译为相同的中间语言代码,由CLR负责执行。只要...
  • 内容索引:VB源码,游戏编程,围棋 一个双人围棋对弈软件,按规则模拟围棋比赛。可以进行围棋对弈。可以自动提子,自动对自杀,打劫进行判断。有复盘,计数,缓棋,自由落子,计时等功能。  具体实现简要说明:  用...
  • COM技术
  • mega128-脉冲计数c程序

    2012-07-29 19:23:22
    一个基于mega128的脉冲计数程序,利用mega128定时器1的输入捕捉功能,实现对输入脉冲的计数,同时显示在四位数码管上的功能。代码非复制粘贴,绝对原创,亲测通过。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,162
精华内容 2,464
关键字:

vb计数