Как соединить эти 2 кода?

Александр85

Новичок
Здравствуйте!
Как соединить эти 2 кода: один с шифрованием и автовводом пароля и второй для проигрывания трекерной XM музыки?
Пытался соединить - перестаёт работать автоввод пароля и соответственно программа не устанавливается, т.к. не может распаковать зашифрованные файлы! ((

Код:
[Setup]
Encryption=Yes
Password=12345

[Code]
procedure InitializeWizard();
begin
WizardForm.PasswordEdit.Visible := False;
WizardForm.PasswordEdit.Text := '12345';
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

[Files]
Source: BASSMOD.dll; DestDir: "{tmp}"; Flags: dontcopy
Source: music.xm; DestDir: "{tmp}"; Flags: dontcopy


Код:
const
  BASS_MUSIC_RAMP        = 1;      // (только для Fast Tracker .xm)
  BASS_MUSIC_RAMPS       = 2;      // (только для Fast Tracker .xm)
  BASS_MUSIC_LOOP        = 4;      // повторение
  BASS_MUSIC_FT2MOD      = 16;     // играть .MOD как FastTracker 2
  BASS_MUSIC_PT1MOD      = 32;     // играть .MOD как ProTracker 1
  BASS_MUSIC_SURROUND    = 512;    // звучание surround
  BASS_MUSIC_SURROUND2   = 1024;   // звучание surround (режим 2)

function BASSMOD_Init(device: Integer; freq, flags: DWORD): Boolean;
external 'BASSMOD_Init@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_MusicFree();
external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicLoad(mem: BOOL; f: PAnsiChar; offset: DWORD; length: DWORD; flags: DWORD): Boolean;
external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPlay(): Boolean;
external 'BASSMOD_MusicPlay@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicStop(): Boolean;
external 'BASSMOD_MusicStop@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPause(): Boolean;
external 'BASSMOD_MusicPause@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_Free();
external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload';

var
  cb:TCheckBox;

procedure PlayOnClick;
var
  Name1: string;
begin
  BASSMOD_MusicFree;
begin
if not BASSMOD_MusicPlay then
 begin
   Name1:=ExpandConstant('{tmp}\music.xm');
 if BASSMOD_MusicLoad(FALSE, PAnsiChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND or 32 or 1) then
  BASSMOD_MusicPlay;
end;
end;
end;

procedure cdClick(Sender: TObject);
begin
If cb.CHECKED then
PlayOnClick
else
 BASSMOD_MusicStop;
end;

procedure InitializeWizard();
var
CancelButton: TButton;
begin
  ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
  ExtractTemporaryFile(ExpandConstant('music.xm'));
   if not BASSMOD_Init(-1,44100,0)
then
begin
  //Выгружаем dll при неудачной инициализации
  MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK)
  BASSMOD_Free;
end;
  cb:=TCheckBox.Create(WizardForm);
  cb.Parent:=WizardForm;
  cb.Width:=ScaleX(220);
  cb.Left:=ScaleY(10);
  cb.Top:=ScaleY(330);
  cb.CAPTION:='Вкл/Выкл музыку';
  cb.ONCLICK:=@cdClick;
  cb.checked:=true;
end;

procedure DeInitializeSetup();
begin
BASSMOD_MusicStop;  //нужно для остановки проигрывания, она и так останавливается, но так нужно:
BASSMOD_Free();     //нужно для выгрузки библиотеки из памяти
end;
 

Andreo Fadio

Ветеран
Пытался соединить - перестаёт работать автоввод пароля и соответственно программа не устанавливается, т.к. не может распаковать зашифрованные файлы!
не может быть такого тут даже конфликтовать то нечему кроме процедур InitializeWizard();, если они не обьеденены. Если идет ошибка или повесили на файлы музыки криптование, или используете еще какой нибудь код, который и приводит к ошибке.
 

Александр85

Новичок
не может быть такого тут даже конфликтовать то нечему кроме процедур InitializeWizard();, если они не обьеденены. Если идет ошибка или повесили на файлы музыки криптование, или используете еще какой нибудь код, который и приводит к ошибке.
Так надо соединять?
[Setup]
Encryption=Yes
Password=12345

[Files]
Source: BASSMOD.dll; DestDir: "{tmp}"; Flags: dontcopy noencryption
Source: music.xm; DestDir: "{tmp}"; Flags: dontcopy noencryption

Код:
const
  BASS_MUSIC_RAMP        = 1;      // (только для Fast Tracker .xm)
  BASS_MUSIC_RAMPS       = 2;      // (только для Fast Tracker .xm)
  BASS_MUSIC_LOOP        = 4;      // повторение
  BASS_MUSIC_FT2MOD      = 16;     // играть .MOD как FastTracker 2
  BASS_MUSIC_PT1MOD      = 32;     // играть .MOD как ProTracker 1
  BASS_MUSIC_SURROUND    = 512;    // звучание surround
  BASS_MUSIC_SURROUND2   = 1024;   // звучание surround (режим 2)

function BASSMOD_Init(device: Integer; freq, flags: DWORD): Boolean;
external 'BASSMOD_Init@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_MusicFree();
external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicLoad(mem: BOOL; f: PAnsiChar; offset: DWORD; length: DWORD; flags: DWORD): Boolean;
external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPlay(): Boolean;
external 'BASSMOD_MusicPlay@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicStop(): Boolean;
external 'BASSMOD_MusicStop@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPause(): Boolean;
external 'BASSMOD_MusicPause@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_Free();
external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload';

var
  cb:TCheckBox;

procedure PlayOnClick;
var
  Name1: string;
begin
  BASSMOD_MusicFree;
begin
if not BASSMOD_MusicPlay then
begin
   Name1:=ExpandConstant('{tmp}\music.xm');
if BASSMOD_MusicLoad(FALSE, PAnsiChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND or 32 or 1) then
  BASSMOD_MusicPlay;
end;
end;
end;

procedure cdClick(Sender: TObject);
begin
If cb.CHECKED then
PlayOnClick
else
BASSMOD_MusicStop;
end;

procedure InitializeWizard();
var
CancelButton: TButton;
begin
  ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
  ExtractTemporaryFile(ExpandConstant('music.xm'));
   if not BASSMOD_Init(-1,44100,0)
  MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK)
  BASSMOD_Free;
WizardForm.PasswordEdit.Visible := False;
WizardForm.PasswordEdit.Text := '12345';
end;
  cb:=TCheckBox.Create(WizardForm);
  cb.Parent:=WizardForm;
  cb.Width:=ScaleX(220);
  cb.Left:=ScaleY(10);
  cb.Top:=ScaleY(330);
  cb.CAPTION:='Вкл/Выкл музыку';
  cb.ONCLICK:=@cdClick;
  cb.checked:=true;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

procedure DeInitializeSetup();
begin
BASSMOD_MusicStop;
BASSMOD_Free(); 
end;
Исправьте. как надо, пожалуйста!
 

SBalykov

Старожил
Так надо соединять?
[Setup]
Encryption=Yes
Password=12345

[Files]
Source: BASSMOD.dll; DestDir: "{tmp}"; Flags: dontcopy noencryption
Source: music.xm; DestDir: "{tmp}"; Flags: dontcopy noencryption

Код:
const
  BASS_MUSIC_RAMP        = 1;      // (только для Fast Tracker .xm)
  BASS_MUSIC_RAMPS       = 2;      // (только для Fast Tracker .xm)
  BASS_MUSIC_LOOP        = 4;      // повторение
  BASS_MUSIC_FT2MOD      = 16;     // играть .MOD как FastTracker 2
  BASS_MUSIC_PT1MOD      = 32;     // играть .MOD как ProTracker 1
  BASS_MUSIC_SURROUND    = 512;    // звучание surround
  BASS_MUSIC_SURROUND2   = 1024;   // звучание surround (режим 2)

function BASSMOD_Init(device: Integer; freq, flags: DWORD): Boolean;
external 'BASSMOD_Init@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_MusicFree();
external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicLoad(mem: BOOL; f: PAnsiChar; offset: DWORD; length: DWORD; flags: DWORD): Boolean;
external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPlay(): Boolean;
external 'BASSMOD_MusicPlay@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicStop(): Boolean;
external 'BASSMOD_MusicStop@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPause(): Boolean;
external 'BASSMOD_MusicPause@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_Free();
external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload';

var
  cb:TCheckBox;

procedure PlayOnClick;
var
  Name1: string;
begin
  BASSMOD_MusicFree;
begin
if not BASSMOD_MusicPlay then
begin
   Name1:=ExpandConstant('{tmp}\music.xm');
if BASSMOD_MusicLoad(FALSE, PAnsiChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND or 32 or 1) then
  BASSMOD_MusicPlay;
end;
end;
end;

procedure cdClick(Sender: TObject);
begin
If cb.CHECKED then
PlayOnClick
else
BASSMOD_MusicStop;
end;

procedure InitializeWizard();
var
CancelButton: TButton;
begin
  ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
  ExtractTemporaryFile(ExpandConstant('music.xm'));
   if not BASSMOD_Init(-1,44100,0)
  MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK)
  BASSMOD_Free;
WizardForm.PasswordEdit.Visible := False;
WizardForm.PasswordEdit.Text := '12345';
end else
  cb:=TCheckBox.Create(WizardForm);
  cb.Parent:=WizardForm;
  cb.Width:=ScaleX(220);
  cb.Left:=ScaleY(10);
  cb.Top:=ScaleY(330);
  cb.CAPTION:='Вкл/Выкл музыку';
  cb.ONCLICK:=@cdClick;
  cb.checked:=true;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
[spoiler=inno]
procedure DeInitializeSetup();
begin
BASSMOD_MusicStop;
BASSMOD_Free();
end;
Исправьте. как надо, пожалуйста!
Как-то иак, наверное...
procedure InitializeWizard();
var
CancelButton: TButton;
begin
ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
ExtractTemporaryFile(ExpandConstant('music.xm'));
if not BASSMOD_Init(-1,44100,0) then begin
MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK)
BASSMOD_Free;
end else
PlayOnClick;
WizardForm.PasswordEdit.Visible := False;
WizardForm.PasswordEdit.Text := '12345';
end;
cb:=TCheckBox.Create(WizardForm);
cb.Parent:=WizardForm;
cb.Width:=ScaleX(220);
cb.Left:=ScaleY(10);
cb.Top:=ScaleY(330);
cb.CAPTION:='Вкл/Выкл музыку';
cb.ONCLICK:=@cdClick;
cb.checked:=true;
end;
 

Александр85

Новичок
Как-то иак, наверное...
procedure InitializeWizard();
var
CancelButton: TButton;
begin
ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
ExtractTemporaryFile(ExpandConstant('music.xm'));
if not BASSMOD_Init(-1,44100,0) then begin
MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK)
BASSMOD_Free;
end else
PlayOnClick;
WizardForm.PasswordEdit.Visible := False;
WizardForm.PasswordEdit.Text := '12345';
end;
cb:=TCheckBox.Create(WizardForm);
cb.Parent:=WizardForm;
cb.Width:=ScaleX(220);
cb.Left:=ScaleY(10);
cb.Top:=ScaleY(330);
cb.CAPTION:='Вкл/Выкл музыку';
cb.ONCLICK:=@cdClick;
cb.checked:=true;
end;
нет! ((
 
Сверху