请能帮我解决这个问题,100分相送.(100分)

  • 主题发起人 wydsunway
  • 开始时间
W

wydsunway

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把注册码写入应用程序本身(Application.exename),有谁能给出代码?
 
procedure TForm1.Button1Click(Sender: TObject);
var
Dir: PChar;
Ch: Array[0..8] of Char;
Stream1: TMemoryStream;
begin
GetMem(Dir,254);
GetTempPath(254, Dir);
TempName:=StrPas(Dir)+'temp.exe';
CopyFile(PChar(ParamStr(0)),PChar(TempName),False);
Stream1:=TMemoryStream.Create;
Stream1.LoadFromFile(TempName);
//在尾部加入8个字节的注册码
Ch[0]:=Chr('1');
Ch[1]:=Chr('2');
Ch[2]:=Chr('3');
Ch[3]:=Chr('4');
Ch[4]:=Chr('5');
Ch[5]:=Chr('6');
Ch[6]:=Chr('7');
Ch[7]:=Chr('8');
Stream1.Seek(0,soFromEnd);
Stream1.Write(Ch,8);
Stream1.SaveToFile(TempName);
Stream1.Free;
FreeMem(Dir);
repeat Close Until FileExists(TempName);
CopyFile(PChar(TempName),PChar(ParamStr(0)),False);
end;

 
你的最后一行:CopyFile(PChar(TempName),PChar(ParamStr(0)),False);应该是不成功的,因为当前应用程序还在运行,结果应该没有保存到.
 
有没有方法直接打开然后直接写入,不要像上面的一样,写入到另外一个文件,再copy过来,用filestream行吗?
 
你的最后一行:CopyFile(PChar(TempName),PChar(ParamStr(0)),False);应该是不成功的
的确是这样,不过你可以在程序的退出代码中仿照程序自杀功能写代copy命令,将更改的文件复制过来。
最后一行我只是给出个大体意思,其实是不能实现的
 
还有一个问题(应该是很简单的问题,可是我不懂):假如我有个字符串是:'abcdefg',现在在用Stream1.Write命令,怎么我这条语句出错:Stream1.write('abcdefg',7);见笑啦!
 
to:fei_l,帮我解释一下吧.是不是我还没有给你加分就不回复啦,要不我先给你加上50分
 
第一个参数不能是String类型
你可以用字符数组
 

Similar threads

S
回复
0
查看
950
SUNSTONE的Delphi笔记
S
S
回复
0
查看
774
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部