Вопрос Как записать текст из TNewEdit в переменную и передать его в реестр?

AlexS

Пользователь
Доброго времени суток! Мужики помогите пожалуйста решить вопрос.
Есть на кастомной странице TNewEdit, по умолчанию текст в его поле берется и отображается из константы {username}, в дальнейшем текст из TNewEdit записывается в реестр...
Не могу никак сделать, чтобы при изменении текста в поле, в реестр записывался новый (введенный вместо {username}) текст.
Понимаю, что это дело реализуется через запись текста из поля в переменную и вписывается затем в реестр, но вот с переменными у меня отношения не задались...

Код:
[Setup]
AppName=MyProg
AppVersion= 1.5
CreateAppDir=no
OutputBaseFilename=setup

[Registry]
Root: HKCU; SubKey: Software\My Program; Flags: uninsdeletekey
Root: HKCU; SubKey: Software\My Program\Settings; ValueType: string; ValueName: Registered; ValueData: {code:edtText}; Flags: uninsclearvalue

[Code]
var
  Panel: TPanel;
  NewEdit: TNewEdit;

procedure edtText (Sender: TObject);
begin
// Текст значения берется отсюда, но тут я споткнулся...
// По умолчанию текст поля должен браться из константы {username} и соответственно записываемое значение в реестре тоже {username}.
// Если вводится другой тест в поле NewEdit, то записываемое значение в реестре уже берется из нового текста...
end;

procedure InitializeWizard();
begin
  begin
  Panel:= TPanel.Create(WizardForm);
  Panel.Parent:= WizardForm.ReadyPage;
  Panel.SetBounds(ScaleX(0),ScaleY(24),ScaleX(417),ScaleY(205));
  end;

  begin
  NewEdit:= TNewEdit.Create(WizardForm);
  NewEdit.Parent:= Panel;
  NewEdit.SetBounds(ScaleX(24),ScaleY(80),ScaleX(369),ScaleY(21));
  NewEdit.Text:= ExpandConstant('{username}');
  end;
end;
 

Хамик

Пользователь
AlexS,
Код:
[Setup]
AppName=MyProg
AppVersion= 1.5
CreateAppDir=no
OutputBaseFilename=setup

[Registry]
Root: HKCU; SubKey: Software\My Program; Flags: uninsdeletekey
Root: HKCU; SubKey: Software\My Program\Settings; ValueType: string; ValueName: Registered; ValueData: {code:edtText}; Flags: uninsclearvalue

[Code]
var
  Panel: TPanel;
  NewEdit: TNewEdit;

function edtText(s: string):string;
begin
  Result := NewEdit.Text;
end;

procedure InitializeWizard();
begin
  begin
  Panel:= TPanel.Create(WizardForm);
  Panel.Parent:= WizardForm.ReadyPage;
  Panel.SetBounds(ScaleX(0),ScaleY(24),ScaleX(417),ScaleY(205));
  end;

  begin
  NewEdit:= TNewEdit.Create(WizardForm);
  NewEdit.Parent:= Panel;
  NewEdit.SetBounds(ScaleX(24),ScaleY(80),ScaleX(369),ScaleY(21));
  NewEdit.Text:= ExpandConstant('{username}');
  end;
end;
 

AlexS

Пользователь
Как же все просто оказалось. А я голову ломаю. Спасибо большое за помощь.
 

AlexS

Пользователь
Мужики, помогите пожалуйста решить следующую задачу. Нужно сделать ввод текста через ключ тихой установки. То есть при обычной установке в реестр записывается текст из константы по умолчанию либо введённый текст, а при тихой установке, если нет ключа (R:=regname) текст из константы по умолчанию, если же есть ключ, то текст из него. Что-то типа MyProg.exe /VERYSILENT /R:=regname.
 

Хамик

Пользователь
Мужики, помогите пожалуйста решить следующую задачу. Нужно сделать ввод текста через ключ тихой установки. То есть при обычной установке в реестр записывается текст из константы по умолчанию либо введённый текст, а при тихой установке, если нет ключа (R:=regname) текст из константы по умолчанию, если же есть ключ, то текст из него. Что-то типа MyProg.exe /VERYSILENT /R:=regname.
По простому как-то так
Код:
[Setup]
AppName=MyProg
AppVersion= 1.5
CreateAppDir=no
OutputBaseFilename=setup

[Registry]
Root: HKCU; SubKey: Software\My Program; Flags: uninsdeletekey
Root: HKCU; SubKey: Software\My Program\Settings; ValueType: string; ValueName: Registered; ValueData: {code:edtText}; Flags: uninsclearvalue

[Code]
var
  Panel: TPanel;
  NewEdit: TNewEdit;

function edtText(s:string):string;
var
tmp, str, par:string;
begin
  Result := NewEdit.Text;
  par := '/R:=';
  tmp := GetCmdTail;
  if Pos(par, tmp) > 0 then
    begin
      str := Copy(tmp, Pos(par, tmp)+Length(par)+1, Length(tmp));
      result := Copy(str, 0, pos('"', str)-1);
    end;
end;

procedure InitializeWizard();
begin
  Panel:= TPanel.Create(WizardForm);
  Panel.Parent:= WizardForm.ReadyPage;
  Panel.SetBounds(ScaleX(0),ScaleY(24),ScaleX(417),ScaleY(205));

  NewEdit:= TNewEdit.Create(WizardForm);
  NewEdit.Parent:= Panel;
  NewEdit.SetBounds(ScaleX(24),ScaleY(80),ScaleX(369),ScaleY(21));
  NewEdit.Text:= ExpandConstant('{username}');
end;

указывать так:
setup.exe /verysilent /R:="AlexS"
 
Сверху