取得程序路径

//获取宿主程序所在目录CString Cmfc_tDlg::GetExePath()
{
CString strPath;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));
strPath.ReleaseBuffer();
return strPath;
}

 

//两个CString连接,不能直接使用+

CString tmp1 = _T("A");

CString tmp1 = _T("B");

 

CString tmp = tem1 + temp2;

 

 

 

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
在ABAP中,接口程序获取文件路径的方法取决于文件的使用场景(如上传、下载或批量处理)。以下是常见方法及示例: --- ### **1. 使用文件选择对话框(GUI Upload/Download)** #### **适用场景**:通过SAP GUI交互式选择文件路径(适用于前端操作)。 #### **(1) 上传文件(获取输入文件路径)** ```abap DATA: lv_filename TYPE string, lv_path TYPE string, lv_fullpath TYPE string, lt_data TYPE TABLE OF string. " 调用文件选择对话框 CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = '请选择要上传的文件' file_filter = 'Text Files (*.txt)|*.txt|All Files (*.*)|*.*' CHANGING file_table = lt_data rc = DATA(lv_rc) user_action = DATA(lv_action). IF lv_action = cl_gui_frontend_services=>action_ok AND lv_rc > 0. lv_fullpath = lt_data[ 1 ]. " 获取完整路径(含文件名) " 分离路径和文件名(可选) cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = DATA(lv_sep) ). SPLIT lv_fullpath AT lv_sep INTO lv_path lv_filename. ENDIF. ``` #### **(2) 下载文件(获取输出文件路径)** ```abap DATA: lv_save_path TYPE string. CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING window_title = '保存文件' default_extension = 'CSV' default_file_name = 'output.csv' CHANGING filename = lv_save_path path = DATA(lv_save_dir) fullpath = DATA(lv_fullpath) user_action = DATA(lv_action). IF lv_action = cl_gui_frontend_services=>action_ok. " lv_fullpath 包含完整保存路径 ENDIF. ``` --- ### **2. 通过ALSM(ArchiveLink)或BDS获取服务器文件路径** #### **适用场景**:处理SAP服务器上的文件(如文档管理系统中的文件)。 ```abap DATA: lv_doc_id TYPE bds_document_id, lv_path TYPE string. " 假设已知文档ID lv_doc_id = 'DOC_ID_12345'. " 获取服务器文件路径(需权限) CALL FUNCTION 'BDS_DOCUMENT_GET_PATH' EXPORTING document_id = lv_doc_id IMPORTING file_path = lv_path. IF lv_path IS NOT INITIAL. WRITE: / '服务器文件路径:', lv_path. ENDIF. ``` --- ### **3. 通过SMW0获取Web Repository文件路径** #### **适用场景**:读取SAP系统中存储的二进制文件(如图形、PDF)。 ```abap DATA: lv_objid TYPE wwwdatatab-objid, lv_path TYPE string. lv_objid = 'Z_LOGO_IMAGE'. " 对象名称 " 获取文件路径(实际是MIME仓库的虚拟路径) CALL FUNCTION 'WWW_GET_MIME_OBJECT' EXPORTING object_id = lv_objid IMPORTING mime_path = lv_path. WRITE: / 'MIME路径:', lv_path. " 例如: /SAP/PUBLIC/z_logo_image.jpg ``` --- ### **4. 通过程序参数或配置表动态获取路径** #### **适用场景**:通过配置表或程序参数灵活定义路径。 ```abap " 从自定义配置表读取路径 SELECT SINGLE file_path FROM ztfile_config INTO @DATA(lv_config_path) WHERE program_name = 'ZPROGRAM_NAME'. IF sy-subrc <> 0. " 使用默认路径 lv_config_path = '/usr/sap/trans/data/'. ENDIF. " 拼接文件名 DATA(lv_fullpath) = |{ lv_config_path }input_data_{ sy-datum }.csv|. ``` --- ### **5. 通过SAP FTP/HTTP适配器获取远程文件路径** #### **适用场景**:从外部系统通过接口获取文件路径(如PI/PO集成场景)。 ```abap DATA: lv_ftp_url TYPE string VALUE 'ftp://example.com/data/input.csv'. " 使用SAP FTP类下载文件(需配置连接) DATA(lo_ftp) = NEW cl_ftp_client( 'FTP_CONNECTION' ). lo_ftp->get( EXPORTING remote_file = lv_ftp_url local_file = '/tmp/local_copy.csv' ). ``` --- ### **6. 通过SAP文件系统接口(Filesystem API)** #### **适用场景**:直接访问操作系统文件(需权限,谨慎使用)。 ```abap DATA: lv_dir TYPE string VALUE '/usr/sap/trans/data/', lt_list TYPE TABLE OF string. " 列出目录内容(获取文件列表) CALL METHOD cl_gui_frontend_services=>directory_list_files EXPORTING directory = lv_dir filter = '*.txt' CHANGING file_table = lt_list count = DATA(lv_count). LOOP AT lt_list INTO DATA(lv_file). WRITE: / lv_dir && lv_file. " 完整文件路径 ENDLOOP. ``` --- ### **关键注意事项** 1. **权限控制**: - 前端路径访问需用户有GUI权限(`S_GUI`)。 - 服务器路径访问需操作系统权限(如`SAPSYS`用户)。 2. **路径标准化**: - 使用`cl_gui_frontend_services=>get_file_separator`处理跨平台路径分隔符(`/`或`\`)。 3. **安全性**: - 避免硬编码路径,优先通过配置表或参数传递。 - 验证用户输入路径,防止目录遍历攻击(如`../../`)。 --- ### **完整示例:上传文件并处理** ```abap REPORT z_upload_file_demo. PARAMETERS: p_file TYPE string LOWER CASE. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. " 弹出文件选择对话框 DATA: lt_files TYPE TABLE OF string. CALL METHOD cl_gui_frontend_services=>file_open_dialog CHANGING file_table = lt_files rc = DATA(lv_rc). IF lv_rc > 0. p_file = lt_files[ 1 ]. ENDIF. START-OF-SELECTION. IF p_file IS INITIAL. MESSAGE '请选择文件' TYPE 'E'. ENDIF. " 读取文件内容 DATA: lt_content TYPE TABLE OF string, lv_content TYPE xstring. CALL METHOD cl_gui_frontend_services=>gui_upload EXPORTING filename = p_file filetype = 'ASC' " 或 'BIN' IMPORTING filelength = DATA(lv_length) CHANGING data_tab = lt_content. " 处理文件内容... LOOP AT lt_content INTO DATA(lv_line). WRITE: / lv_line. ENDLOOP. ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值