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

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

Аватара для Johny777

Ветеран


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

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


Цитата Serega:
Если я правильно понял, то вам нужен такой вариант: »
Спасибо! Работает отлично но вот если поместить +fps_max 60 в конец строки функция возвращает 6 (ноль куда-то слетает)
но извратившись(удалил все пробелы) сделал так:

читать дальше »

Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[  code]
function DeleteAllSp(const st: String): String;
begin
  while pos(' ',st)>0 do delete(st,pos(' ',st),1);
  Result := st;
end;


function GetParam(const StartStr, Value: string): string;
var
  pos_start, pos_end, len: Integer;
begin
  Result := '';
  len := Length(Value);
  pos_start := Pos(StartStr, Value);
  // проверяем, что строка не пустая и начальное значение есть в исходной строке
  if (len > 0) and (pos_start > 0) then
    begin
      pos_start := pos_start + Length(StartStr);
      pos_end := pos_start;
      // перебираем посимвольно до тех пор пака не встретим '+' или '-', или же не будет достигнут конец строки
      while (pos_end < len) and (Value[pos_end] <> '+') and (Value[pos_end] <> '-') do
        pos_end := pos_end + 2;
      Result := Trim(Copy(Value, pos_start, pos_end - pos_start));
    end;
end;


procedure InitializeWizard();
var
  Temp_Value_String, Params:String;
  Param_Edit: TEdit;
begin
  WizardForm.OuterNotebook.Hide;

  Param_Edit := TNewEdit.Create(nil);
  with Param_Edit do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(40), ScaleY(100), ScaleX(300), ScaleY(21));
    Text := '-console +fps_max 60';
  end;

  Params := DeleteAllSp('-console +fps_max 60');
  
  if Params <> '' then
  if Pos('+fps_max',Param_Edit.text) >0 then
  MsgBox(GetParam('+fps_max',Params), mbConfirmation, MB_OK);
end;

возвращает нужное число
Цитата Serega:
Аналог вашей функции Replace, только работает раза в 1,5 быстрее: »
спасибо!
Цитата Serega:
В анси версии компилятора, работа со строками происходит приблизительно раз в 10 быстрей юникодовой версии... »
может потому что юникодная инно может вмещать сложные символ типа иероглифов
те обработка текста сложнее и выделение оперативки больше?

Последний раз редактировалось Johny777, 19-09-2012 в 12:26.


Отправлено: 12:16, 19-09-2012 | #949