游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6095|回复: 10

诡异的代码

[复制链接]

2

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2008-8-17 17:24:00 | 显示全部楼层 |阅读模式
《学vc编游戏》第三章让我动吧 3-5-2程序入口中的一段代码
......;
char appdir[256];
GetCurrentDirectory(256,appdir);
dir=appdir;
if(dir.Right(8)=="运行程序")
        dir="图片/";
else dir="../运行程序/图片/";
.........;
这段程序是给两个可能性读取图片的,我删掉了
char appdir[256];
GetCurrentDirectory(256,appdir);
dir=appdir;
后,变成只有
.......;
if(dir.Right(8)=="运行程序")
        dir="图片/";
else dir="../运行程序/图片/";
...........;
但是这段代码就然还有效,还有效的意思是说把.exe程序放在"运行程序"文件夹中
他会直接读“图片/”文件夹下的图片,放在与"运行程序"文件夹同一级的其他文件夹下
它会读"../运行程序/图片/"下的图片。但是我删了
char appdir[256];
GetCurrentDirectory(256,appdir);
dir=appdir;
这一段了,dir已经没有赋值了,dir.Right(8)是不可能=="运行程序"了,但他放在"运行程序"文件夹中时
依然”==“了。
为什么呀??


2

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2008-8-17 20:47:00 | 显示全部楼层

Re:诡异的代码

我一开始以为是自己打错了给dir赋了值,我就在官方的代码上删除
char appdir[256];
GetCurrentDirectory(256,appdir);
dir=appdir;
情况还是这样。。。。。。
不合逻辑啊。。。

1

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2008-8-17 21:27:00 | 显示全部楼层

Re:诡异的代码

char appdir[256];不能删把,要么你的代码过时了.
我这的代码char appdir[256];没和GetCurrentDirectory(256,appdir);挨在一起.
我删了这代码的确还运行得蛮好的.
那就说明
if(dir.Right(8)=="运行程序")
dir="图片/";
else dir="../运行程序/图片/";
这句的判断没执行第一个分支dir="图片/";而执行了第二个分支dir="../运行程序/图片/";
这里dir 是赋值了的.在这之前因删除了.
GetCurrentDirectory(256,appdir);
dir=appdir;
所以没赋值.dir.right(8)是随机的.

2

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2008-8-17 21:33:00 | 显示全部楼层

Re:诡异的代码

嗯 char appdir[256];这个确实没删。。。。。。
但是情况是 如果你把生成的.exe放进”运行程序“这个文件夹里,他一样能读到图片,那就是说
if(dir.Right(8)=="运行程序")dir="图片/";
else dir="../运行程序/图片/";
这句的判断有执行第一个分支dir="图片/";
这就是我的迷惘。。。。

1

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2008-8-17 21:40:00 | 显示全部楼层

Re:诡异的代码

我看了一下,这章的源代码目录下面没有图片目录.也许[../运行程序/图片]这个目录是从源代码目录下移过来的.

2

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2008-8-17 22:06:00 | 显示全部楼层

Re:诡异的代码

。。。。。。我试过放到别人的电脑上运行
单独取出.exe,与”图片“文件夹,加上自己建得”运行程序“文件夹,还是两种情况都成功读图。。。。
[../运行程序/图片]这个就是应对源代码目录下面没有图片目录这一情况的,有这个编码就可以在vc中运行程序时成功从同级目录”运行程序“下读图,没有这个代码编译时就读不到图。

42

主题

334

帖子

344

积分

中级会员

Rank: 3Rank: 3

积分
344
发表于 2008-8-18 00:57:00 | 显示全部楼层

Re:诡异的代码

没这么神哟!你好好看一下呢。

2

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2008-8-18 19:58:00 | 显示全部楼层

Re:诡异的代码

晕。。。我研究了很久,试过在不同地方建文件夹试验,试过重新写一个程序只包含基本显示图片功能与这个调图方式,结果也是一样。。。。。。我检查了代码除了CString dir这句与if那句本身外,就在也没有给dir定义赋值得了,难道真的用不用这一段
GetCurrentDirectory(256,appdir);
dir=appdir;
都一样吗。。。
难道dir不用赋值默认就是GetCurrentDirectory(256,appdir)之后appdir的值了吗?。。。

2

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2008-8-21 00:55:00 | 显示全部楼层

Re:诡异的代码

还得说明一下
所有出现appdir的语句 与针对它的语句 我都删了
应该不会是appdir阴魂不散
虽然删了这些 但程序依然成功运行了。。。。。。

21

主题

54

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2008-8-21 06:51:00 | 显示全部楼层

Re:诡异的代码

把debug目录删了重编译!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 14:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表