Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

public

 { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMGetMinMaxInfo(var MSG: Tmessage);

Begin

 inherited;

 with PMinMaxInfo(MSG.lparam)^ do begin

with ptMinTrackSize do begin

X := 300;

Y := 150;

end;

with ptMaxTrackSize do begin

X := 350;

Y := 250;

end;

 end;

end;

end.
 

TIniFile 

Проблемы ini-файла

Кто-нибудь

имел какие-нибудь проблемы при использовании модуля TIniFile? Я думаю здесь какая-то детская проблема с кэшированием!!!

Вот что я делал:

(* c:\test.ini уже существует *)

myIni := TIniFile.Create('c:\test.ini');

With myIni do begin

 …. (добавляем новую секцию в test.ini

end;

myIni.Free;

RenameFile('c:\test.ini', 'c:\test1.ini');

Что я получил:

1. test1.ini НЕ ИМЕЕТ добавленной мною секции;

2. всякий раз при создании или открытии нового файла в том же самом каталоге с помощью File Manager, 'c:\test.ini' появляется вновь, и у него СУЩЕСТВУЕТ секция, которую я добавлял.

Я решил эту проблему добавлением следующей строки перед IniFile.Free:

WritePrivateProfileString(nil, nil, nil, PChar(IniFileName));

Для получения дополнительной информации обратитесь к электронной справке к разделу 'WritePrivateProfileString'.

– Tony Chang 

Как создать Ini-файл в директории программы?

По умолчанию ini-файл создается в Windows-директории (например: TIniFile.Create('MFile.ini')), что приводит к «захламлению» оной. Более (эко-)логично (за исключением случаев, когда программа делается для CD-ROM) если ini-файл создается в той же директории что и главная программа. Вот пример чтения и записи ini файла из директории программы:

function ReadIni(ASection, AString : String) : String;

var

 sIniFile: TIniFile;

 sPath : String[60];

begin

 GetDir(0,sPath);

 sIniFile := TIniFile.Create(sPath + '\Name.INI');

 Result := sIniFile.ReadString(ASection, AString, S);

 sIniFile.Free;

end;

procedure WriteIni(ASection, AString, AValue: String);

var

 sIniFile: TIniFile;

 sPath : String[60];

begin

 GetDir(0,sPath);

 sIniFile := TIniFile.Create(sPath + '\Name.INI');

 sIniFile.WriteString(ASection, AString, AValue);

 sIniFile.Free;

end;

TRegistry 

Дополненный TRegistry,

умеет работать с значениями типа REG_MULTI_SZ (Windows NT, Windows 2000)

Кондратюк Виталий советует:

unit Reg;

{$R-,T-,H+,X+}

interface

uses Registry, Classes, Windows, Consts, SysUtils;

type TReg = class(TRegistry)

public

 procedure ReadStringList(const name : string; list : TStringList);

 procedure WriteStringList(const name : string; list : TStringList);

end;

implementation

//*** TReg *********************************************************************

//------------------------------------------------------------------------------

// Запись TStringList ввиде значения типа REG_MULTI_SZ в реестр

//------------------------------------------------------------------------------

procedure TReg.WriteStringList(const name : string; list : TStringList);

var

 Buffer : Pointer;

 BufSize : DWORD;

 i, j, k : Integer;

 s : string;

 p : PChar;

begin

 {подготовим буфер к записи}

 BufSize := 0;

 for i:=0 to list.Count-1 do inc(BufSize, Length(list[i])+1);

Поделиться с друзьями: