Page 1 of 1

Работа со строками в Паскале :)))

Posted: 02.10.2019 19:22
by Stels
Есть задача:
Взять часть строки, превратить ее в цифры и сравнить с заданным значением. А если более точно и ближе к уо, то из клилока вытащить прочность предмета.

Не могу найти команду, которая позволит вытащить часть строки с нужного символа нужное кол-во символов и сделать что-то типа strtoint

Пока что это реализовано вот таким способом, но хочется сократить код и упростить его

Code: Select all

var PA, PA2: string;
i,a,b: integer;
const
text = '55'; //нужное значение прочности
n = 81; //позиция с которой идёт прочность
begin
PA := GetCliloc($716BFCEA);
a:=pos(text,PA);
if a > n then
    begin
    PA2:=copy(PA,n,2);
    b:=StrToInt(PA2);    
    end;
end.
Прочность указывается вида 55/55, где первое значение - это текущая прочность, второе - максимальное

Re: Работа со строками в Паскале :)))

Posted: 05.10.2019 8:58
by drabadan

Re: Работа со строками в Паскале :)))

Posted: 05.10.2019 9:26
by Stels
по сути там тоже самое написано, что и я сделал. Видимо стандартных функций нету. А для использования 1 раз писать отдельную функцию нет смысла

Re: Работа со строками в Паскале :)))

Posted: 06.10.2019 10:57
by NoSilence
Можно поинтересоваться, а что вы хотели передать в таком случае в стандартную функцию, чтобы она вернула вам 55 из строки клилока?
Или вы имели ввиду регулярные выражения?

Re: Работа со строками в Паскале :)))

Posted: 06.10.2019 14:08
by Stels
NoSilence wrote:Можно поинтересоваться, а что вы хотели передать в таком случае в стандартную функцию, чтобы она вернула вам 55 из строки клилока?
Или вы имели ввиду регулярные выражения?
Как пример по той ссылке, что-то в таком роде

Code: Select all

StrToInt('строка',a,b)
где a - символ с которого считываем
b - кол-во символов

Re: Работа со строками в Паскале :)))

Posted: 13.10.2019 17:02
by Vizit0r
нет, такого нет. Это упрощение ради упрощения - просто плодить количество методов, в которых в итоге кодер просто тонет.

Re: Работа со строками в Паскале :)))

Posted: 17.10.2019 14:05
by Tomers
Я подобную фичу делал на своем булочнике. Нужно было вытащить кол-во требуемых предметов из заказа.
Для этого подойдет функция COPY.
Нужно просто скопировать символы между пробелами после слова durability, ну или просто вырезать 2 символа
что-то типа такого выйдет:

Code: Select all

strtoint(copy(stroka,pos(durability',stroka)+2,2));
Если не разберешься, стукни в личку, слеплю тебе велосипед.