VC得到当前目录与得到应用程序目录的一个应用

2023-10-27

得到当前目录的函数:    GetCurrentDirectory
  得到应用程序目录的函数是: GetModuleFileName
  用法都很简单,不知道就看MSDN吧。
        
  我先用这2个函数分别写一个实现同一个功能的函数。
        
    

以下是代码片段:
  // 函 数 名:ReadIni
    // 功能描述:读配置文件database.ini(用来配置oracle数据库的用户名、密码和服务名的),成功返回true,否则返回false
    // 输入参数:void
    // 输出参数:bool
    // 创建日期:2006-5-25
    // 修改日期:2006-5-25
    // 作 者:joinclear
    // 附加说明:无
    bool ReadIni()
    {
        char databuf[1024];    
        char filepath[1024];    
        memset(databuf,0,1024);        
        memset(filepath,0,1024);
        GetCurrentDirectory(1024,filepath);
        strcat(filepath ,"//" );
        strcat(filepath ,"database.ini" );
        
        CFile file;
        if ( !file.Open(filepath,CFile::modeRead)) 
        {
            return false;
        }
        file.Close();
        
        memset(databuf,0,1024);
        GetPrivateProfileString("oracle","user id","",databuf,1024,filepath);
        m_sUserId = databuf;
        
        memset(databuf,0,1024);
        GetPrivateProfileString("oracle","password","",databuf,1024,filepath);
        m_sPassword = databuf;
        
        memset(databuf,0,1024);
        GetPrivateProfileString("oracle","data source","",databuf,1024,filepath);
        m_sDataSource = databuf;
        
        memset(databuf,0,1024);        
        memset(filepath,0,1024);
    
        return true;
    }
    
    bool ReadIni()
    {
        
        char databuf[1024];
        
        CString sPath;
        GetModuleFileName(NULL,sPath.GetBufferSetLength(1023),1024);
        sPath.ReleaseBuffer();
        int nPos;
        nPos = sPath.ReverseFind(’//’);
        sPath = sPath.Left(nPos);
    
        CString str = sPath + "//database.ini";
    
        char filepath[1024];
         strcpy(filepath,(LPSTR)(LPCTSTR)str);
        
        CFile file;
        if ( !file.Open(filepath,CFile::modeRead)) 
        {
            return false;
        }
        file.Close();
        
        memset(databuf,0,1024);
        GetPrivateProfileString("oracle","user id","",databuf,1024,filepath);
        m_sUserId = databuf;
        
        memset(databuf,0,1024);
        GetPrivateProfileString("oracle","password","",databuf,1024,filepath);
        m_sPassword = databuf;
        
        memset(databuf,0,1024);
        GetPrivateProfileString("oracle","data source","",databuf,1024,filepath);
        m_sDataSource = databuf;
        
        memset(databuf,0,1024);        
        memset(filepath,0,1024);
    
        return true;
    }

    
    你用这2个函数分别执行一下,发现并没有任何的不一样。
    
    但是当你在同一个程序里面,哪怕是不同的界面,如果你打开一个文件选择或保存对话框的时候,用GetCurrentDirectory函数的这种方法就不行了。因为当前目录被你的文件选择或保存对话框修改了。
    
    这时用GetModuleFileName函数的方法就很有必要了,但要注意的是GetModuleFileName得到的应用路径是包括EXE名的,所以EXE名还是要去掉的。(前提是database.ini和EXE文件是在同个目录下)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC得到当前目录与得到应用程序目录的一个应用 的相关文章

  • 插入期间违反唯一约束:为什么? (甲骨文)

    我正在尝试在表中创建一个新行 表上有两个约束 一个是关键字段 DB ID 另一个是将值限制为字段 ENV 中的几个之一 当我进行插入时 我没有将关键字段作为我尝试插入的字段之一 但我收到此错误 unique constraint N390
  • 如何通过ODBC检索Oracle数据库函数的结果?

    我在通过 ODBC 调用 Oracle 存储函数 而不是过程 时遇到问题 我的函数非常简单 它只是连接两个字符串 我可以通过以下方式调用它 rs c execute SELECT add str yogi bubu FROM dual fo
  • 如何查看授予其他用户的架构哪些权限

    考虑这种情况 在数据库中 我有两个用户 A 和 B 及其相应的架构 我想知道 如何获取信息 架构 B 中的用户 A 有哪些权限 考虑这种情况 我们有两个用户及其关联的场景 我们有用户A和用户B 在A中 假设我们有TB1 TB2 在B中 假设
  • 将.exe文件嵌入到C++程序中?

    我编写了一个 C 程序 我想在其中执行第二个程序 这是一个 exe 文件 问题是我想将我的程序作为一个文件共享给其他人 当我在互联网上搜索时 我找到了这个解决方案 只需将第二个 exe 文件作为二进制资源存储在主文件中 exe 在编译时使用
  • PL/SQL 过程成功完成但没有显示任何内容

    我有以下过程代码 create or replace PROCEDURE Ventas cliente p DNI IN CHAR IS CURSOR c pedidos clientes IS SELECT FROM Pedidos ve
  • 关于pl/sql存储程序文本的问题

    我使用 TOAD 进行 PL SQL 开发 在 TOAD 中 当我输入过程名称并按 f4 时 我可以看到该过程的源代码 我认为 TOAD 从 v sqltext 视图获取源代码 为了证实我的想法 我写了一个查询 select from v
  • 使用 createNativeQuery 调用 Oracle 存储过程

    我需要使用 JPA 调用存储过程并找到这篇文章 http www oracle com technology pub articles vasiliev jpql html http www oracle com technology pu
  • Oracle ODP.net 托管驱动程序与非托管驱动程序

    托管和非托管 Oracle ODP Net 驱动程序之间是否存在任何性能基准 即 除了架构 部署简单性之外 迁移到托管驱动程序是否有任何优势 我想分享一些结果 我认为与部署的简便性相比 性能上的小缺陷是值得的 Note seg意味着秒 对于
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • 替换 Oracle 包的一部分

    我需要修改包内的一个过程 我需要接触声明和实施 由于我正在维护每次修改的补丁文件 因此我希望更改最小化 我可以仅使用更改的过程更新包 如果是 如何更新 还是需要提供完整的包定义和实现 您需要替换整个包规范和主体 您不能仅对包的一部分进行操作
  • Oracle 中的 SQL 调优 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何文章 链接可以让我找到 SQL 调优 Oracle 的示例 如果能用例子来解释那就太好了 我需
  • 通过 __get() 通过引用返回 null

    快速规格 PHP 5 3 error reporting 1 the highest 我正在使用 get 通过引用技巧神奇地访问对象中任意深度的数组元素 快速示例 public function get key return isset t
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • REgex从oracle中的字符串中获取数字

    我有以下格式的字符串 阿克拉姆 88 jamesstree 20140418 阿克兰 8 约翰街 20140418 阿克兰 888 johnstreet 20140418 现在我只想检索 88 8 和 888 值 我为此编写了以下查询 SU
  • 通过 Oracle 的数据库链接运行 SQL Server 存储过程

    参考如何通过数据库链接执行 Oracle 存储过程 https stackoverflow com questions 240788 how to execute an oracle stored procedure via a datab
  • Oracle 中的日期字符串(以毫秒为单位)

    我想将以下字符串转换为日期 2004 09 30 23 53 48 140000000 I tried to date YYYY MM DD HH24 MI SS FF9 But PL SQL http en wikipedia org w
  • 删除连接到另一表 SQL 的一个表中的记录

    我有两个表 一个包含 212 000 条记录 已弃用的记录 另一个包含 10 500 000 条记录 我想在 id 和 version number 字段上连接两个表 因为两个表都有这些字段 我希望从连接表中删除匹配的记录 来自连接表 即从
  • SQL中的NULL和编程语言中的NULL之间的区别

    我刚刚遇到一个关于如何在 T SQL 可能还有其他形式的 SQL 中处理 NULL 的有趣场景 这个问题得到了很好的描述和回答这个问题 https stackoverflow com questions 2866714 how does a
  • 在 PL/SQL 中将绑定变量与动态 SELECT INTO 子句结合使用

    我有一个关于 PL SQL 中的动态 SQL 语句中可以使用绑定变量的问题 例如 我知道这是有效的 CREATE OR REPLACE FUNCTION get num of employees p loc VARCHAR2 p job V
  • 默认情况下,Spark sql 模式中的可为空性是建议性的。严格执行的最佳方法是什么?

    我正在开发一个简单的 ETL 项目 它读取 CSV 文件 执行 对每列进行一些修改 然后将结果以 JSON 格式写出 我想要读取我的结果的下游进程 确信我的输出符合 一个商定的模式 但我的问题是 即使我定义 我的输入模式的所有字段都为 nu

随机推荐

  • C# 中的多线程和异步编程

    目录 前言 1 并发 并行 异步 同步 的概念 区别以及使用场景 1 并发和并行 2 同步和异步 3 何时使用多线程编程 何时使用异步编程 2 基础知识 1 简介及概念 1 1Join 和 Sleep 1 2线程是如何工作的 1 3线程 v
  • MySql事务和存储引擎

    目录 一 MySQL 事物 1 事务的概念 2 事务的ACID特点 2 1 1 原子性 2 1 2 一致性 2 1 3 隔离性 2 1 4 Mysql 及事物隔离级别 查询全局事务隔离级别 查询会话事务隔离级别 设置全局事务隔离级别 设置会
  • DRF---序列化组件

    目录 序列化器Serializer 序列化组件基本使用 使用序列化类 序列化多条数据 使用序列化类 序列化单条数据 反序列化 新增 修改 新增 视图类 序列化类 视图类 序列化类 序列化类的常见字段类和常见参数 常用字段类型 选项参数 通用
  • 【Linux线程同步】生产者消费者模型

    文章目录 1 peach 线程互斥中可能还会存在的问题 peach 2 peach 线程同步 peach 2 1 apple 同步概念与竞态条件 apple 2 2 apple 条件变量函数 apple lemon 初始化 lemon le
  • Qt5.15源码编译详解

    1 请先参考 https blog csdn net weixin 60395515 article details 127284046 spm 1001 2014 3001 5501 2 有以下几个不同的地方需要修改 Qt5的mkspec
  • 超详细解决困扰人的python典例:“有n个人围成一圈”式n里挑一

    自学python No 2 引语 题目 案例实现 range 函数 append 函数 pop 函数 完整代码 引语 记录学习路程 抛砖引玉 如有更好的算法或者出现错误 欢迎指点 题目 有n个人围成一圈 顺序排号 从第一个人开始报数 从1到
  • 汽车之家各种车型参数爬虫

    汽车之家各种车型参数爬虫 结果如下 本案例使用jupyter notebook 用到requests BeautifulSoup lxml urlencode pandas五个库 爬取下来的数据如下图所示 详细过程 整个过程分成三个部分 1
  • ubuntu系统信息查询(主板,内存,硬盘,网卡)

    1 主板型号 主板支持最大内存 单条内存的参数 sudo dmidecode t 2 查看主板信息 sudo dmidecode t 16 grep Maximum 查看主板支持最大内存 sudo dmidecode t memory 查看
  • JDBC、连接步骤(4步)、需要导入的第三方jar包、开发步骤

    1 JDBC Java Database Connectivity java连接数据库的工具 1 1 什么是JDBC 他是java提供的一组API 用来提供连接数据库中需要用到的类和接口 他是一组规范 为不同数据库封装相同接口的一组规范 让
  • 基于 Web 的 LDAP 认证,访问资源就是这么安全

    轻量级目录访问协议 即 LDAP 协议 是微软 Active Directory AD 和 OpenLDAP 等传统身份管理解决方案中的核心身份认证协议 然而 IT 环境的不断发展暴露了传统方案的问题 基于本地部署的设计逻辑无法适应新兴的云
  • Unity2D游戏无限刷新地图

    关于Unity2D游戏如何无限刷新地图的问题 首先在Unity中创建多个大小相同的物体当做刷新的地图对象 然后在创建一个名称为Endless cs的脚本 然后添加如下代码 public float distance void OnBecam
  • cmake(三十五)Cmake之include指令

    一 CMakeLists txt和cmake脚本的联系和区别 cmake脚本 1 cmake文件里面通常是 什么信息 information cmake文件 里包含了一些 公共 复用 的 cmake命令 和一些 宏 函数 当CMakeLis
  • java开发团队认知_一个优秀的研发团队应该具备什么特征

    1 计划执行 计划安排得当 不要老加班 不要老是现实和计划不匹配 不要做到哪儿计划就推后到哪儿 2 研发成果 成功产出几个重影响力级别的 完整成块的 有成就感自豪感的产品或项目 3 团队氛围 这个团队每个人都相处的很融洽 4 团队协作 每个
  • Pytorch 的 LSTM 模型的简单示例

    1 代码 完整的源代码 import torch from torch import nn 定义一个LSTM模型 class LSTM nn Module def init self input size hidden size num l
  • C. Doremy‘s IQ(二分/贪心)

    题目 题意 给定n个任务和艾米的智商q 艾米要按顺序处理这n个任务 每个任务有难度值a i 对于每个任务 艾米可以选择处理 也可以选择不处理 如果艾米当前的智商q大于等于任务a i 则艾米可以直接处理该任务 智商不受任何影响 如果艾米当前的
  • SpringCloud——微服务

    微服务技术栈 在之前的开发过程中 我们将所有的服务都部署在一台服务器中 当我们的服务开始越来越多 业务越来越复杂 当一台服务器不能承担我们的业务的时候 就需要将不同的业务分开部署在不同的服务器上 这每一个单独分离的服务 就是微服务 这些搭载
  • 数据结构 常见的八大数据结构汇总 为什么要学习数据结构?解读数据结构!进阶必看!

    文章目录 什么是数据结构 概念解释 为什么要学习数据结构 常见的数据结构 0 数组 1 链表 2 栈 3 队列 4 树 5 散列表 又叫哈希表 6 堆 7 图 思维导图 横向 纵向 什么是数据结构 数据结构 Data Structure 是
  • 使用Arduino开发ESP32:串口(Serial port) HardwareSerial库使用说明

    HardwareSerial库使用 使用演示 上图中通过HardwareSerial库实现了对串口1的使用 具体说明见下文 详细说明 使用HardwareSerial库需要先声明一个对象 例如上文图中的HardwareSerial mySe
  • MySQL基本操作(三)

    MySQL基本操作 三 看过MySQL基本操作 二 的应该已经体会到mysql数据库下user表的妙用了 我相信你也已经做过一些尝试了 比如自建用户名无需密码登录 自建任意主机登录等等 这样的尝试会增加你对mysql的兴趣 Ok 你第一次登
  • VC得到当前目录与得到应用程序目录的一个应用

    得到当前目录的函数 GetCurrentDirectory 得到应用程序目录的函数是 GetModuleFileName 用法都很简单 不知道就看MSDN吧 我先用这2个函数分别写一个实现同一个功能的函数 以下是代码片段 函 数 名 Rea