如有下代码:
procedure Tform1.formshow....
var
  I:string;
begin
  i:='1';
  showmessage(i);
end;
在每次运行时都会显示1但是我想让第一次运行时显示1,第二次运行时显示2,
第三次运行时显示A..不用外部文件 怎么完成?
请大虾多多指点
最好写出原码

解决方案 »

  1.   

    DELPHI中不是可以用到汇编吗??
    但不知道怎么写
      

  2.   

    这个跟汇编扯不上关系。
    自身exe文件是不可修改的。
      

  3.   

    原来看到过exe写自身的帖子,不过对我来说艰深且无用,就放过了
      

  4.   

    用register or database or inifile
      

  5.   

    提供一种思路:DELPHI在编译时选择Project Options的Version info页,勾上include Version infomation in Project,这时你写的版本信息可以保存在EXE本身,你可以把你的变量值放在此处,每运行一次就递增1,问题的关键我只知道读出该编译信息,不知道在程序运行怎么回写?就看你自己去研究啦
    实在想不出好办法帮你,不好意思!
      

  6.   

    在C++里有Static关键字可以保留i的值,不知Delphi可不可以用Static关键字修饰,如果可以应该可以解决。
    var
      i : String; static;
    begin
      if i = '1'
        then i := '2'
      else if i = '2';
        then i : = 'A';
      showmessage(i);
    end;
    静态变量可以保留到程序运行结束,但在作用域以外不能访问。(面向对象书上是这么说的)
      

  7.   

    对不起,刚才那段代码不能通过编译。关于Delphi如何定义静态成员变量还需高人指点。如果用全局变量不行么?
    var
      Form1 : TForm1;
      i : string;
    在OnCreate事件里加上
    i := '1';
      

  8.   

    Delphi中的“静态变量”可以用下面的方法实现:
    procedure TForm1.Button1Click(Sender: TObject);
    {$J+}
    const
      I: Integer = 1;
    {$J-}
    begin
      ShowMessage(IntToStr(I));
      Inc(I);
    end;你多点击几次Button1,可以看出效果。
    但这个还是没有对exe文件进行修改。你下一次重新运行,还是不行