无忧启动论坛

标题: gotomsdos你需要的软件在此 [打印本页]

作者: wang6071    时间: 2005-5-5 20:27
标题: gotomsdos你需要的软件在此
gotomsdos:
  你在dos区发的关于16进制转换成10进制并存入变量的问题(http://bbs.wuyou.net/cgi-bin/topic.cgi?forum=36&topic=69&show=0)
1:与wbat类似功能的xset软件可在俺的空间下载
   http://free.ys168.com/index.aspx?wangsea
  在soft目录下。
2: xset并不能解决你提出的问题,现存的dos软件也不能解决你这个特殊问题。所以俺专门写了一个程序来解决它。
[UploadFile=setvar_1115295590.rar]
   使用方法:
   输入:setvar Skyroads.cfg 6 var 即可
   参数skyroads.cfg就是你的游戏记录文件,当然可以是其它名字
   6:字节偏移,好象你要取的就是第6位二进制数据吧?
   var  环境变量名(当然也可以用其它的名字,如vvar等)
   
作者: gotomsdos    时间: 2005-5-6 13:03
标题: gotomsdos你需要的软件在此
多谢 wang6071 !
解决了, 如果你是用C语言写的,能不能贴出或传个源码出来,我看一下? PASCAL DELPHI,就算了,没学过
本来,这个问题我是想用BAT配合DEBUG等小工具就能解决的,不想还真难办..
还真的要写程序呢...

作者: wang6071    时间: 2005-5-6 18:47
标题: gotomsdos你需要的软件在此
较简单的处理,就公布出来给喜欢C的朋友看看。
#include "stdio.h"
char buffer[256];
int vspf(char *fmt, ...)
{
   va_list argptr;
   int cnt;
   va_start(argptr, fmt);
   cnt = vsprintf(buffer, fmt, argptr);
   va_end(argptr);
   return(cnt);
}
keyboard(int choice,char key[])
{
  int keybufbott;
  int offset,i;
  offset=peek(0x40,0x1c);
  for(i=0;key!=';';;i++)
  {
    if(choice==0)
    {pokeb(0x40,offset,0x00);
     pokeb(0x40,offset,key);}
    if(choice!=0)
    {pokeb(0x40,offset,key);
     pokeb(0x40,offset+1,0x00);}
    offset=offset+2;
    if(offset==0x3e)offset=0x1e;
   }
  pokeb(0x40,offset,0x0d);
  pokeb(0x40,offset+1,0x00);
  offset=offset+2;
  pokeb(0x40,0x1c,offset);
}
void main(int argc,char *argv[])
{
  FILE *fp;
  unsigned char  buf[1];
  int offset;
if(argc<4){
    printf("error: Not Enough command line.\n");
    printf("see example: setvar Skyroads.cfg 6 var \n");
    exit(1);}
if(argc>4){
    printf("error: Too many paterners!\n");exit(1);}
  if ( (fp=fopen(argv[1], "rb")) == NULL)
  { printf("File not found!");exit(1);}
  if (atoi(argv[2])!=0) offset=atoi(argv[2]);
  else
   { printf("param offset must number!");exit(1); }
  fseek(fp, offset, SEEK_SET);
  fread(buf, 1,1,fp);
  if (feof(fp)>0)
    {printf("param offset too big!");exit(1);}
  vspf("%s%s%s%u", "set ",argv[3],"=",buf[0]);
  close( fp );
  keyboard(1,buffer);
}
作者: gotomsdos    时间: 2005-5-6 19:18
标题: gotomsdos你需要的软件在此
非常感谢! 长假不去玩?

作者: wang6071    时间: 2005-5-9 07:16
标题: gotomsdos你需要的软件在此
gotomsdos:
   上面的程序在批处理中连续执行确实有问题,改了一下,借用了了horst的Nset.com,现将示例打包在此。
   关于你说的
   从文件的第6字节(从0开始算是6,从1开始算就是7)开始,把第6,8,10,,,,64处的一个字节(也就是地址每次加2)分别存入变量t1,t2,t3,,,,,,t30.总共30个变量
   这样做恐怕不太好,这样一来这个程序只能针对一个程序了不具有通用性。还是像示例一样在批处理中一条一条地加好一点。
    说点题外话:一次性设定如此多的环境变量不知道会不会造成环境变量空间不足。如果没有特殊需要还是随用随设吧。[UploadFile=setvar_1115594141.rar]
作者: gotomsdos    时间: 2005-5-9 11:44
标题: gotomsdos你需要的软件在此
LMOD是不是包括了NSET的功能?

作者: wang6071    时间: 2005-5-9 18:45
标题: gotomsdos你需要的软件在此
关于lmod是否包含nset,要看你怎么用了。比如:
setvar skyroad.cfg 6 var1 |Lmod set &#36;1 >temp.bat
setvar skyroad.cfg 8 var2 |lmod set &#36;1 >>temp.bat
call temp.bat
del temp.bat
可以实现Nset的类似功能,但是要产生临时文件,不便于运用在只读环境(虽然通过技巧也能运行在只读环境)。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3