memo1.Lines.Add('currency='+floattostr(reg.ReadCurrency('currency'  )) ) ;
编译能通过,就是读不出来。
显示:project project1.exe raised exception class eregistryexception with message'failed to get data for 'currency''.process stopped.use step or run to continue.
书上的环境是DELPHI 6,我用的7。

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses registry  ;
    {$R *.dfm}procedure tForm1.Button1Click(Sender: TObject);
    var
    reg : tregistry;
    buffer : pchar  ;
    d : tdate         ;
    t : ttime      ;begin
    buffer :='101010';
    d:=date;
    t:=time;reg:=tregistry.Create;
    try
    reg.RootKey:=hkey_current_user;
    if reg.OpenKey('\text',true ) then
    begin
    reg.WriteCurrency('currency',100);
    reg.WriteBinaryData('binarydata',buffer,10);
    reg.WriteDateTime('datetime',d);
    reg.WriteDate('date',d );
    reg.WriteTime('time',t);
    reg.writefloat('float',101.5);
    reg.WriteInteger('integer',99);
    reg.WriteBool('bool',true);
    reg.WriteString('string','test');
    reg.WriteExpandString('expandstring','text,expand string');
    end  ;
    finally
    reg.CloseKey ;
    reg.Free;
    end;
    end;procedure TForm1.Button2Click(Sender: TObject);var
      reg:tregistry;
      buffer:pchar;begin
      reg:=tregistry.Create ;
      try
        reg.RootKey :=hkey_current_user;
        if reg.OpenKey('\test',true) then
          begin
            memo1.Lines.Add('currency='+floattostr(reg.ReadCurrency('currency'  )) ) ;//就是这一句
            memo1.Lines.Add('binarydata='+inttostr(reg.ReadBinaryData('binarydata',buffer,10) ));
            memo1.Lines.Add('datetime='+datetostr(reg.ReadDateTime('datetime') ));
            memo1.Lines.Add('date='+datetostr(reg.ReadDate('date') )) ;
            memo1.Lines.Add( 'time='+timetostr(reg.ReadTime('time') ));
            memo1.Lines.Add('float='+floattostr(reg.ReadFloat('float') ));
            memo1.Lines.Add('integer='+inttostr(reg.ReadInteger('integer') ));
            if (reg.ReadBool('bool')=true) then memo1.Lines.Add('bool='+ 'true');
            if (reg.readbool('bool')=false) then memo1.Lines.Add('bool='+'false');
            memo1.Lines.Add('string='+reg.ReadString('string') );
            memo1.Lines.Add('expandstring='+reg.ReadString('expandstring') )  ;
          end;
      finally
      reg.CloseKey ;
      reg.Free ;
      end;
      end;end.我怕都贴出来太长了没人看
      

  2.   

    写入的键是'text': if reg.OpenKey('\text',true ) then
    读出的键是'test': if reg.OpenKey('\test',true) then两者不一致