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

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

Аватара для Gnom_aka_Lexander

Ветеран


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

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


Raf-9600, В каком смысле? Если менять язык инсталлятора на ходу, то это страшное дело - абсолютно все надписи нужно перерисовывать заново - это долгий процесс, и на слабых компах вызовет дикие тормоза.
по предложенным тобой примерам:
Проверка кириллицы в пути - слегка правленый вариант товарища VoLT:
читать дальше »
Код: Выделить весь код
[Setup]
AppName = MyApp
AppVername = MyApp
DefaultDirName = {pf}\MyApp

[*Code]

function IsAnsi(S: string): boolean;
begin
  if CompareStr(AnsiLowercase(S), Uppercase(S)) = 0 then
    if CompareStr(Lowercase(S), AnsiLowercase(S)) = 0 then
  Result := True;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  if CurPageID = wpSelectDir then
    if not (IsAnsi(WizardForm.DirEdit.Text)) then
    begin
      MsgBox('В пути установки присуствуют русские символы'+#13#10+'Пожалуйста, повторите ввод.', mbError, mb_Ok);
      Result := False;
    end;
end;

Скрипт для вывода данных о винтах - слегка правленный вариант от YURSHAT(требует get_hw_caps.dll):
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: compiler:Dll Pack\get_hw_caps.dll; Flags: dontcopy

[*Code]

var
  DirList: TNewListBox;
  Text: TNewStaticText;

function GetHardDriveFreeSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';
function GetHardDriveName(hdd: integer): PAnsiChar;
  external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';
function GetHardDriveTotalSpace(hdd: integer): Integer;
  external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';
function GetHardDrivesCount(): Integer; external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function NumToStr(Float: Extended): string;
begin
  Result:=Format('%.2n', [Float]);
  StringChange(Result, ',', '.');
  while ((Result[Length(Result)]='0')
    or (Result[Length(Result)]='.'))
      and (Pos('.',Result)>0) do
  SetLength(Result,Length(Result)-1);
end;

function TBorGBorMB(Float: Extended): string;
// функция определения ТБ, ГБ или МБ
begin
  if Float<1024 then Result:=NumToStr(Float)+' MB'
  else if (Float/1024)<1024 then Result:=NumToStr(Float/1024)+' GB'
  else if (Float/(1024*1024))<1024 then Result:=NumToStr(Float/(1024*1024))+' TB'
end;

procedure ListBoxOnClick(Sender: TObject);
var
  NewLetter, OldString: string;
begin
  with TNewListBox(Sender) do
  begin
    NewLetter := Copy(Items[ItemIndex], 0, 1);
    OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
    WizardForm.DirEdit.Text := NewLetter + OldString;
  end;
end;

procedure InitializeWizard();
var
  i : Integer;
begin
  { DirList }
  DirList := TNewListBox.Create(WizardForm);
  with DirList do
  begin
    Parent := WizardForm.SelectDirPage;
    SetBounds(ScaleX(0),ScaleY(112),ScaleX(417),ScaleY(97));
    ItemHeight := 13;
    ItemIndex := 0;
    for i:= 0 to GetHardDrivesCount() - 1 do
      Items.Add(GetHardDriveName(i)+ '      ' + 'Свободно: ' + IntToStr((GetHardDriveFreeSpace(i)*100) div GetHardDriveTotalSpace(i)) + '%  '+'('+ TBorGBorMB(GetHardDriveFreeSpace(i))+')'+'    '+'из'+'    '+TBorGBorMB(GetHardDriveTotalSpace(i)));
    OnClick := @ListBoxOnClick;
  end;
end;

На описания тоже гдето есть скрипт более оптимальный и в плане производительности и в плане косячности работы, за авторством Shegorat, но лень искать (эти два под рукой просто были).

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 01-04-2012 в 16:56.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:44, 01-04-2012 | #1361