Текущий архив: 2004.02.17;
Скачать: CL | DM;
Вниз
Работа с реестром Найти похожие ветки
← →
dub (2004-02-09 13:48) [0]Хая =)) Я ниразу не имел дела с реестром, не представлялось случая =(. Но вот понадобилось.
Мне необходимо, чтобы при запуске программы, она проверяла существуетли ветвь, к примеру
HKEY_CURRENT_USER\Software\myprog. Если нет, то она её создавала, и создавала в ней строковой параметр(далее СТ) с именем "progver" и со значением "1". Далее, если по запуску програмы, она выясняла что данная ветвь существует, то она к значению находящемущя в СТ "progver" прибовляла "+1", и заносила то число которе находиться в СТ в переменную например с именем "reg_ver"(string или integer). Вот и всё =))) помагите реализовать такую процедуру. спасибо.
← →
Anatoly Podgoretsky (2004-02-09 14:01) [1]Смотреть справку по TRegistry и примеры.
← →
KSergey (2004-02-09 14:02) [2]TRegistry+F1, и читаем Example (после OpenKey/KeyExists/ReadInteger/WriteInteger - все эти слова комбинируем для достижения требуемого результата)
← →
dub (2004-02-09 14:25) [3]Говарюже, никогдан не имел дело, я даже понятия не имею какие нужны для него компаненты. он мне на первойже строчке выдаёт ошибку
Build
[Error] Unit1.pas(21): Undeclared identifier: "TRegistry"
[Error] Unit1.pas(28): Missing operator or semicolon
[Error] Unit1.pas(28): Incompatible types: "TComponent" and "Integer"
[Error] Unit1.pas(30): Missing operator or semicolon
[Error] Unit1.pas(31): Missing operator or semicolon
[Error] Unit1.pas(32): Undeclared identifier: "Result"
[Error] Unit1.pas(32): Missing operator or semicolon
[Error] Unit1.pas(34): Missing operator or semicolon
[Error] Unit1.pas(37): ";" expected but "." found
[Error] Unit1.pas(39): Declaration expected but end of file found
[Fatal Error] Project2.dpr(5): Could not compile used unit "Unit1.pas"
Я и сам не против учиться, но мне это нужно срочно, поэтому и прошу помощи у вас. ;)
← →
Delphin (2004-02-09 14:28) [4]А ты в Uses добавил Registry ?
Приведи код
← →
VMcL (2004-02-09 14:28) [5]uses Registry
← →
dub (2004-02-09 14:42) [6]хех, ну не настолько же я туп стобы этого ненаписать =)))
← →
dub (2004-02-09 14:46) [7]Ну или например что это значит?
[Error] Unit1.pas(27): This form of method call only allowed for class methods
??
← →
Delphin (2004-02-09 14:48) [8]uses Registry
var
Reg:Tregistry;
I:Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
Reg:=Tregistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
IF not Reg.KeyExists("\Software\MyProg")
Then Begin
Reg.CreateKey("\Software\MyProg");
Reg.OpenKey("\Software\MyProg",True);
Reg.WriteInteger("Progver",1);
Reg.CloseKey;
Reg.Free;
End
Else
Reg.OpenKey("\Software\MyProg",True);
IF Reg.ValueExists("Progver") Then Begin
I:=Reg.ReadInteger("Progver");
I:=I+1;
Reg.WriteInteger("Progver",I);
Reg.CloseKey;
Reg.Free;
End;
end;
← →
TUser (2004-02-09 14:48) [9]Вот
Missing operator or semicolon
Incompatible types: "TComponent" and "Integer"
и
Undeclared identifier: "Result"
точно к реестру отношения не имеют.
← →
dub (2004-02-09 14:57) [10]Ой, прям таки спасибо =))
Если что-то понадобиться, пиши, помагу ;)
← →
VMcL (2004-02-09 15:43) [11]>[10]
>Если что-то понадобиться, пиши, помагу
Боже упаси от таких помащников.
← →
Тимохов (2004-02-09 15:44) [12]
>
> Боже упаси от таких помащников.
Толька памочь морду набить.
← →
VLAD-MAL (2004-02-09 15:50) [13]Пример:
TDefRegistry = class (TRegistry)
// Класс для работы с реестром. Дополнительно обеспечивает значения
// по умолчанию.
protected
function ReadDateDef(ValueName : string; DefValue : TDate) : TDate;
function ReadTimeDef(ValueName : string; DefValue : TTime) : TTime;
function ReadStringDef(ValueName : string; DefValue : String) : String;
function ReadIntegerDef(ValueName : string; DefValue : Integer) : Integer;
end;
function TDefRegistry.ReadDateDef(ValueName: string;
DefValue: TDate): TDate;
begin
if ValueExists(ValueName) then
Result := ReadDate(ValueName) else
Result := DefValue;
end;
function TDefRegistry.ReadIntegerDef(ValueName: string;
DefValue: Integer): Integer;
begin
if ValueExists(ValueName) then
Result := ReadInteger(ValueName) else
Result := DefValue;
end;
function TDefRegistry.ReadStringDef(ValueName, DefValue: String): String;
begin
if ValueExists(ValueName) then
Result := ReadString(ValueName) else
Result := DefValue;
end;
function TDefRegistry.ReadTimeDef(ValueName: string;
DefValue: TTime): TTime;
begin
if ValueExists(ValueName) then
Result := ReadTime(ValueName) else
Result := DefValue;
end;
...
procedure TApplicationData.LoadMainData;
// Загрузка данных из реестра
var
RegKeyName: string;
MainRegKey : TDefRegistry;
begin
RegKeyName := "\SOFTWARE\"+LeftStr(ExtractFileName(Application.ExeName),
Pos(".",ExtractFileName(Application.ExeName))-1);
MainRegKey := TDefRegistry.Create(KEY_READ);
try
MainRegKey.RootKey := HKEY_CURRENT_USER;
MainRegKey.OpenKey(RegKeyName, False);
LastWorkedDataBaseFileName := MainRegKey.ReadStringDef("LastWorkedDataBaseFileName","");
LastWorkedDataBaseLogin := MainRegKey.ReadStringDef("LastWorkedDataBaseLogin","SYSDBA");
LastWorkedDataBasePassword := MainRegKey.ReadStringDef("LastWorkedDataBasePassword","masterkey");
MainDateBegin := MainRegKey.ReadDateDef("MainDateBegin",
StrToDate("01.01."+ inttostr (YearOf(date))));
MainDateEnd := MainRegKey.ReadDateDef("MainDateEnd",
StrToDate("31.12."+ inttostr (YearOf(date))));
LastUserName := MainRegKey.ReadStringDef("LastUserName","");
MainRegKey.CloseKey;
finally
MainRegKey.Free;
end
end;
И все!
Страницы: 1 вся ветка
Текущий архив: 2004.02.17;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.011 c