• How to using x++ code achieve Lookup files list with entire folder


    How to using x++ code achieve Lookup files list with entire folder

    Effect as below Image

     

    Wrote by Jimmy xie at 2011-07-19      

    Enjoying... ... (*^__^*) ... ...

    /*
    How to using x++ code achieve Lookup files list with entire folder
    Wrote by Jimmy xie at 2011-07-19
    */
    static void Jimmy_LookupFileFolder(Args _args)
    {
    FilePath initfilePath
    = @"D:\工具";
    FileName initFileName;
    FileName initFullName;
    int i,m;
    int initHandle;
    Dialog dlg
    = new Dialog("");
    DialogField dlgPath
    = dlg.addField(typeid(filepath));

    FileName fullFileName(FileName _path, FileName _fileName)
    {
    FileName _XpathName;
    FileName _XfileName;
    FileName _XfileExtension;
    ;
    [_XpathName,_XfileName,_XfileExtension]
    = fileNameSplit(_fileName);
    return _XpathName + '\\' + _XfileName + _XfileExtension;
    }
    void findFiles(filepath filepath)
    {
    FileName Subfullname;
    int SubHandle;
    FileName SubFileName;

    [SubHandle,SubFileName]
    = WinAPI::findFirstFile(filepath + "\\*.*");

    while (SubFileName != "")
    {
    Subfullname
    = filepath + "\\" + SubFileName;
    if (strlwr(SubFileName) != strlwr('.') &&
    strlwr(SubFileName)
    != strlwr('..') &&
    WinAPI::fileExists(Subfullname,TRUE)
    )
    {
    if(winAPI::folderExists(Subfullname))
    {
    m
    ++;
    setprefix(Subfullname);
    findFiles(Subfullname);
    }
    else
    {
    i
    ++;
    info(strfmt(
    "%1 - %2",i,Subfullname));
    }
    }
    SubFileName
    = WinAPI::findNextFile(SubHandle);
    }

    WinAPI::findClose(SubHandle);
    }
    ;
    dlg.doInit();
    dlgPath.value(initfilePath);
    if(!dlg.run())
    return;
    initfilePath
    = dlgPath.value();
    if(!initfilePath)
    throw error("Please selection the file path!");

    [inithandle,initFileName]
    = WinAPI::findFirstFile(initfilePath + "\\*.*");

    setprefix(initfilePath);
    while (initFileName != "")
    {
    initFullName
    = initfilePath + "\\" + initFileName;
    if (strlwr(initFileName) != strlwr('.') &&
    strlwr(initFileName)
    != strlwr('..') &&
    WinAPI::fileExists(initFullName,TRUE)
    )
    {
    if(winAPI::folderExists(initFullName))
    {
    m
    ++;
    setprefix(initFullName);
    findFiles(initFullName);
    }
    else
    {
    i
    ++;
    info(strfmt(
    "%1 - %2",i,initFileName));
    }
    }
    initFileName
    = WinAPI::findNextFile(initHandle);//must be initHandle, otherwise Function 'FindNextFileW' in DLL library 'KERNEL32' has caused an exception.
    }
    WinAPI::findClose(inithandle);
    info(strfmt(
    "文件 : %1, 子文件夹 : %2",i,m));
    }

  • 相关阅读:
    systemctl
    防火墙firewalld
    k8s 基础概念
    进程
    模板问题
    自动发现
    oracle操作
    aix 10代oracle zabbix2.4.4 日志监控
    paramiko
    test
  • 原文地址:https://www.cnblogs.com/Fandyx/p/2110298.html
Copyright © 2020-2023  润新知