我该怎么解决这个问题?
MFC是不是有运行时获取路径的函数?
或者一次性,直接把(*.txt)加载到*.exe,发给别人只要*.txt就行了?
高速赐教,谢谢
22 个解决方案
#1
你把(*.txt)文件和*.exe放在同一目录下,发给别人
在读(*.txt)文件的代码中改成相对路径, 比如,读(*.txt)的函数为ReadFile("*.txt")
在读(*.txt)文件的代码中改成相对路径, 比如,读(*.txt)的函数为ReadFile("*.txt")
#2
没看懂你到底要问什么……
建议你加个打开文件对话框!
建议你加个打开文件对话框!
#3
把.txt文件一起发给他,程序里面不要用绝对路径,用相对路径
#4
你说的是CFile 类。
现在的问题是:你把文件发给别人,应该随便放在那都可以运行的吧?难道告诉别人,这个这个文件要存在哪哪哪哪才有用?
#5
相对路径?
#6
最简单的方法就是把程序所需的.txt文件也发过去
#7
你的(*.txt)文件保存的应该是游戏的地图或别的东西吧,你在加载(*.txt)文件时,不要指定这个文件的路径??
我说的是相对*.exe的路径,不是那种绝对路径F:\\..\\(*.txt)
我说的是相对*.exe的路径,不是那种绝对路径F:\\..\\(*.txt)
#8
你的程序中读*.txt文件的路径不能直接写成readfile("*.txt"),而应该写成readfile(".\\*.txt"),然后发布时将exe和txt文件放在一起。
#9
把txt中的内容编译成资源放到exe中,这样只需要发一个exe就可以了
#10
7楼的意思是我把
写成
是这个意思吗?
CFile f;
char* pFileName = "G:\\8x9.txt";
if( !f.Open( pFileName, CFile::modeRead, &e ) )
{
AfxMessageBox( "File could not be opened " );
}
写成
CFile f;
char* pFileName = "8x9.txt";
if( !f.ReadFile( pFileName, CFile::modeRead, &e ) )
{
AfxMessageBox( "File could not be opened " );
}
是这个意思吗?
#11
如何写到资源中?能不能具体点?
#12
关于路径,程序会按下面的顺序查找
1) 包含调用进程的. e x e 文件的目录。
2) 调用进程的当前目录。
3) Wi n d o w s 的系统目录。
4) Wi n d o w s 目录。
5) PAT H 环境变量中列出的目录。
所以你的f.open()就可以写成f.open("*.txt"),注意,发布的时候也要把*.txt文件和*.exe放在同一目录下.
你可以试试,用原来的绝对路径,把你的*.txt这个文件换个位置,程序就会出错..而用户不知道你的*.txt应该放哪才正确,所以,还不如直接把它放在和*.exe同一目录下,发布的时候一起发布..
1) 包含调用进程的. e x e 文件的目录。
2) 调用进程的当前目录。
3) Wi n d o w s 的系统目录。
4) Wi n d o w s 目录。
5) PAT H 环境变量中列出的目录。
所以你的f.open()就可以写成f.open("*.txt"),注意,发布的时候也要把*.txt文件和*.exe放在同一目录下.
你可以试试,用原来的绝对路径,把你的*.txt这个文件换个位置,程序就会出错..而用户不知道你的*.txt应该放哪才正确,所以,还不如直接把它放在和*.exe同一目录下,发布的时候一起发布..
#13
十分感谢“lizhigang34”!
不知道那位能不能解释一下把txt文件写成资源的方法的?
不知道那位能不能解释一下把txt文件写成资源的方法的?
#14
不知你的*.txt保存的是什么,一般都是和程序一块发布,你为什么非要把它写成资源呢..
玩过传奇没,看看它下面是不是有个文件夹"map\\..."
玩过传奇没,看看它下面是不是有个文件夹"map\\..."
#15
其实你的方法解决问题了。但是我想知道写入资源这个方法,以后肯定能用上。比如讲你的程序数据不想让别人知道。有时候数据比代码更重要呢!
#16
有没有那位高手指点下,如何把数据写入资源?
没有的话中午结贴了。
没有的话中午结贴了。
#17
把数据写入资源,那你的意思就说生成EXE之后就再不需要导入这个txt了。
那很简单,你可以把txt的内容直接复制到代码中,做成一段字符串,然后程序再一开始运行时就把这段字符串生成一个文件。然后你程序就不用再改动什么了,原来是怎样就继续怎样。
那很简单,你可以把txt的内容直接复制到代码中,做成一段字符串,然后程序再一开始运行时就把这段字符串生成一个文件。然后你程序就不用再改动什么了,原来是怎样就继续怎样。
#18
假如你不想让别知道数据的话,可以考虑active 控件 或者 DLL。
#19
这个方法也太。。。。。
如果数据不小怎么办?
单独放一个文件还不如就用txt算了。
#20
那样程序运行不是很占用资源
#21
你可以定义一个庞大的数组玩玩, 把文件内容全部存进去。
#22
我的游戏要用txt文件就是一个庞大数组!
#1
你把(*.txt)文件和*.exe放在同一目录下,发给别人
在读(*.txt)文件的代码中改成相对路径, 比如,读(*.txt)的函数为ReadFile("*.txt")
在读(*.txt)文件的代码中改成相对路径, 比如,读(*.txt)的函数为ReadFile("*.txt")
#2
没看懂你到底要问什么……
建议你加个打开文件对话框!
建议你加个打开文件对话框!
#3
把.txt文件一起发给他,程序里面不要用绝对路径,用相对路径
#4
你说的是CFile 类。
现在的问题是:你把文件发给别人,应该随便放在那都可以运行的吧?难道告诉别人,这个这个文件要存在哪哪哪哪才有用?
#5
相对路径?
#6
最简单的方法就是把程序所需的.txt文件也发过去
#7
你的(*.txt)文件保存的应该是游戏的地图或别的东西吧,你在加载(*.txt)文件时,不要指定这个文件的路径??
我说的是相对*.exe的路径,不是那种绝对路径F:\\..\\(*.txt)
我说的是相对*.exe的路径,不是那种绝对路径F:\\..\\(*.txt)
#8
你的程序中读*.txt文件的路径不能直接写成readfile("*.txt"),而应该写成readfile(".\\*.txt"),然后发布时将exe和txt文件放在一起。
#9
把txt中的内容编译成资源放到exe中,这样只需要发一个exe就可以了
#10
7楼的意思是我把
写成
是这个意思吗?
CFile f;
char* pFileName = "G:\\8x9.txt";
if( !f.Open( pFileName, CFile::modeRead, &e ) )
{
AfxMessageBox( "File could not be opened " );
}
写成
CFile f;
char* pFileName = "8x9.txt";
if( !f.ReadFile( pFileName, CFile::modeRead, &e ) )
{
AfxMessageBox( "File could not be opened " );
}
是这个意思吗?
#11
如何写到资源中?能不能具体点?
#12
关于路径,程序会按下面的顺序查找
1) 包含调用进程的. e x e 文件的目录。
2) 调用进程的当前目录。
3) Wi n d o w s 的系统目录。
4) Wi n d o w s 目录。
5) PAT H 环境变量中列出的目录。
所以你的f.open()就可以写成f.open("*.txt"),注意,发布的时候也要把*.txt文件和*.exe放在同一目录下.
你可以试试,用原来的绝对路径,把你的*.txt这个文件换个位置,程序就会出错..而用户不知道你的*.txt应该放哪才正确,所以,还不如直接把它放在和*.exe同一目录下,发布的时候一起发布..
1) 包含调用进程的. e x e 文件的目录。
2) 调用进程的当前目录。
3) Wi n d o w s 的系统目录。
4) Wi n d o w s 目录。
5) PAT H 环境变量中列出的目录。
所以你的f.open()就可以写成f.open("*.txt"),注意,发布的时候也要把*.txt文件和*.exe放在同一目录下.
你可以试试,用原来的绝对路径,把你的*.txt这个文件换个位置,程序就会出错..而用户不知道你的*.txt应该放哪才正确,所以,还不如直接把它放在和*.exe同一目录下,发布的时候一起发布..
#13
十分感谢“lizhigang34”!
不知道那位能不能解释一下把txt文件写成资源的方法的?
不知道那位能不能解释一下把txt文件写成资源的方法的?
#14
不知你的*.txt保存的是什么,一般都是和程序一块发布,你为什么非要把它写成资源呢..
玩过传奇没,看看它下面是不是有个文件夹"map\\..."
玩过传奇没,看看它下面是不是有个文件夹"map\\..."
#15
其实你的方法解决问题了。但是我想知道写入资源这个方法,以后肯定能用上。比如讲你的程序数据不想让别人知道。有时候数据比代码更重要呢!
#16
有没有那位高手指点下,如何把数据写入资源?
没有的话中午结贴了。
没有的话中午结贴了。
#17
把数据写入资源,那你的意思就说生成EXE之后就再不需要导入这个txt了。
那很简单,你可以把txt的内容直接复制到代码中,做成一段字符串,然后程序再一开始运行时就把这段字符串生成一个文件。然后你程序就不用再改动什么了,原来是怎样就继续怎样。
那很简单,你可以把txt的内容直接复制到代码中,做成一段字符串,然后程序再一开始运行时就把这段字符串生成一个文件。然后你程序就不用再改动什么了,原来是怎样就继续怎样。
#18
假如你不想让别知道数据的话,可以考虑active 控件 或者 DLL。
#19
这个方法也太。。。。。
如果数据不小怎么办?
单独放一个文件还不如就用txt算了。
#20
那样程序运行不是很占用资源
#21
你可以定义一个庞大的数组玩玩, 把文件内容全部存进去。
#22
我的游戏要用txt文件就是一个庞大数组!