Сделай сам: IE и Delphi – вместе веселее!
28.01.2008 от Иван Ширкоend;
Таким образом, чтобы узнать текущий адрес в IE, достаточно применить эти две функции:
…
FindEdit(h);
Adress := GetText(h);
…
Пункт 2: Увеличить (уменьшить) последнее число адреса на единицу
Здесь нам потребуется только умение оперировать со строками и знание основ арифметики.
//увеличение последнего числа в строке s
function IncURL(s:string): String;
const
num = ['0'..'9'];
var
i, j, cnt: word;
plus, ch: byte;
code: integer;
s1: string;
begin
i := length(s);
plus := 0;
//ищем первую цифру с конца
while (i>0) and not(s[i] in num) do
dec(i);
//если нашли…
if (i<>0) then
begin
//считаем количество девяток, которыми кончается число
cnt := 0;
while (i>0) and (s[i]='9') do
begin
dec(i);
inc(cnt);
end;
if (i=0) or not( s[i] in num) then
begin
ch := 0;
{если число сплошь состоит из девяток, то мы должны первой цифрой сделать '1' и заменить все девятки на нули}
if not(s[i] in num) then
plus := 1;
end else
val(s[i], ch, code);
inc(ch);
str(ch, s1);
if (cnt>0) then
//заменяем последние девятки на нули
for j := 1 to cnt do
s1 := s1 + '0';
//составляем итоговую строку
s := copy(s, 1, i-1+plus)+s1+copy(s, i+cnt+1, length(s)-i-cnt);
end;
result := s;
end;
//уменьшение последнего числа в строке s
function DecURL(s:string):string;
const
num = ['0'..'9'];
var
i, j, cnt: word;
minus, ch: byte;
code: integer;
s1: string;
begin
i := length(s);
minus := 0;
//ищем последнюю цифру в строке
while (i>0) and not (s[i] in num) do
dec(i);
if (i<>0) then
begin
cnt := 0;
//считаем количество нулей
while (i>0) and(s[i]='0') do
begin
dec(i);
inc(cnt);
end;
if (i>0) and (s[i] in num) then
begin
val(s[i],ch,code);
dec(ch);
Рубрики: Delphi, Сделай сам |
28.06.2009 в 14:21
Что-то так не выходит ничего