//写配置文件
procedure WriteToIni(Const AFont : TFont);
var IniFile:TInifile;
    FileName:String;
begin
   FileName:=ExtractFilePath(Application.ExeName)+'\PFont.ini';
   IniFile:=TIniFile.Create(FileName);
   IniFile.WriteString('Font', 'FontName',AFont.Name);
   IniFile.WriteInteger('Font', 'FontSize',AFont.Size);
   IniFile.WriteBool('Font','FontBold',fsBold in AFont.Style);
   IniFile.WriteBool('Font','FontItalic',fsItalic in AFont.Style);
   IniFile.WriteInteger('Font', 'FontColor',AFont.Color);
   IniFile.Free;
end;//读配置文件
procedure readfromIni(var aFontName: String;aFontSize: Integer;AFontstyle: TFontStyles;aFontColor: TColor);
var IniFile:TInifile;
    FileName:String;
    B:Boolean;
begin
  FileName:=ExtractFilePath(Application.ExeName)+'\PFont.ini';
  IniFile:=TIniFile.Create(FileName);  aFontName:=IniFile.ReadString('Font','FontName','');
  aFontSize:=StrToInt(IniFile.ReadString('Font','FontSize',''));
  B:=IniFile.ReadBool('Font','FontBold',false);
  if b then
    aFontStyle := aFontStyle + [fsbold];
  B:=IniFile.ReadBool('Font','FontItalic',false);
  if b then
    aFontStyle:=aFontStyle + [fsItalic];
  aFontColor:=StrToInt(IniFile.ReadString('Font','FontColor',''));
  IniFile.Free;
end;//
procedure TForm1.FormShow(Sender: TObject);
var aFontName: String;aFontSize: Integer;aFontColor: TColor;AFontstyle: TFontStyles;
    Size:Integer;
begin
 Size:=11;
 readfromIni(AFontName,AFontSize,AFontStyle,AFontColor);
 Form1.Font.Name:=AFontName;
 ShowMessage(Form1.Font.Name);
 ShowMessage(IntToStr(Form1.Font.Size));
 Form1.Font.Size:=AFontSize;
 ShowMessage(IntToStr(Form1.Font.Color));
 Form1.Font.Color:=AFontColor;
 Form1.Font.Style:=AFontStyle;
 ADOQuery1.Open;
end;现在的问题是:
ShowMessage(IntToStr(Form1.Font.Size));
显示出来是12;
但是Form1.Font.Size:=AFontSize;之后就是172444272
如果Form1.Font.Size:=Size;就正常为11
Form1.Font.Color:=AFontColor也是类似问题,我不知道错什么地方,为什么出现这样问题,请救帮助

解决方案 »

  1.   

    procedure readfromIni(var aFontName: String;var aFontSize: Integer;var AFontstyle: TFontStyles;var aFontColor: TColor);
    var IniFile:TInifile;
        FileName:String;
        B:Boolean;
    begin
      FileName:=ExtractFilePath(Application.ExeName)+'\PFont.ini';
      IniFile:=TIniFile.Create(FileName);  aFontName:=IniFile.ReadString('Font','FontName','');
      aFontSize:=StrToInt(IniFile.ReadString('Font','FontSize',''));
      B:=IniFile.ReadBool('Font','FontBold',false);
      if b then
        aFontStyle := aFontStyle + [fsbold];
      B:=IniFile.ReadBool('Font','FontItalic',false);
      if b then
        aFontStyle:=aFontStyle + [fsItalic];
      aFontColor:=StrToInt(IniFile.ReadString('Font','FontColor',''));
      IniFile.Free;
    end;
      

  2.   

    楼主都崩溃的问题也只给20分啊,也太铁公鸡了吧。:)
    把过程改成
    procedure readfromIni(var aFontName: String;var aFontSize: Integer;
        var AFontstyle: TFontStyles; var aFontColor: TColor);
    另外你显示的都是form1的属性,你还没有把读出的属性付值给form1
      

  3.   

    看起来好像没什么问题,试一下:
    1、看看ini文件的实际内容是什么;
    2、需要读整数的地方直接用ReadInteger来读,而不是用ReadString读取之后再StrToInt
      

  4.   

    aFontSize:=StrToInt(IniFile.ReadString('Font','FontSize','')); 这行最后的默认值不要给空串,毕竟是数值呀,给个比如'12'吧。再有,为什么不用readinteger呢?