Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 517
Благодарности: 314

Профиль | Отправить PM | Цитировать


Crazy Noise, вот самодостаточный пример. Единственный его минус, точнее два минуса: будет работать только, если всегда вводится один и тот же серийник, и второй минус - чувствительность к регистру букв в серийнике. Ну а принцип прост: если определенный серийный номер(серийник задается в константе) не найден, страница создается. В противном случае пропускается. Короче, если даже *.ini файл присутствует, но он пустой, или в нем указан другой серийник страница будет создана. Чтение строки из файла воспроизвел по мотивам примера от Johny777)
Пример
Код: Выделить весь код
[Code]
const
SERIAL_NUMBER = '1234-5678-ABCD-EFGH';

var
  SerialPage: TWizardPage;
  Block_1, Block_2, Block_3, Block_4: TNewEdit;
  sNumber, OldNumber: String;

function PreviousData(const SearchNumber: String): Boolean;
begin
  if OldNumber = '' then LoadStringFromFile(ExpandConstant('{userdocs}\GameEX\keysgame.ini'), OldNumber);
  Result := Pos(SearchNumber, OldNumber) > 0;
end;

procedure InitializeWizard();
begin
 SerialPage := CreateCustomPage(wpSelectTasks, 'Serial number', 'Please insert serial number');

  Block_1 := TNewEdit.Create(nil);
  with Block_1 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(96), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;

  Block_2 := TNewEdit.Create(nil);
  with Block_2 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(152), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;

  Block_3 := TNewEdit.Create(nil);
  with Block_3 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(208), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;

  Block_4 := TNewEdit.Create(nil);
  with Block_4 do
  begin
    Parent := SerialPage.Surface;
    SetBounds(ScaleX(265), ScaleY(98), ScaleX(50), ScaleY(21));
    Text := '';
    MaxLength := 4;
  end;
end;

function NextButtonClick(CurPageID:integer): Boolean;
begin
  case CurPageID of
    SerialPage.ID:
    begin
      CreateDir(ExpandConstant('{userdocs}\GameEX'));
      sNumber := ExpandConstant(Block_1.Text + '-' + Block_2.Text + '-' + Block_3.Text + '-' + Block_4.Text);
      SaveStringToFile(ExpandConstant('{userdocs}\GameEX\keysgame.ini'), sNumber, False);
    end;
  end;
  Result := True;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  case PageID of
    SerialPage.ID: Result := PreviousData(SERIAL_NUMBER);
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:26, 21-05-2013 | #511