Ветеран
Сообщения: 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
|