Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

гамп на uolife.ru

тут можно задать вопрос по скриптингу
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Post by pickwill »

Я Ваш скрипт и использовал, как раз с GetGumpFullLines. Нашел где-то по форуму:

Code: Select all

Program takegump; 
 
var 
b : TStringList;
i : Integer;
 
Begin
b := TStringList.Create; 
SetSilentMode(False);
for  i := 0 to GetGumpsCount - 1 do
  GetGumpFullLines(i,b);
b.free;
End.
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Post by pickwill »

прикрутил ещё следующий код, Miralex'а:

Code: Select all

procedure StrBreakApart(const S, Delimeter : string; Parts : TStrings);
var
  CurPos: integer;
  CurStr: string;
begin
  Parts.clear;
  Parts.BeginUpdate();
  try
    CurStr:= S;
    repeat
      CurPos:= Pos(Delimeter, CurStr);
      if (CurPos>0) then
      begin
        Parts.Add(Copy(CurStr, 1, Pred(CurPos)));
        CurStr:= Copy(CurStr, CurPos+Length(Delimeter),
                    Length(CurStr)-CurPos-Length(Delimeter)+1);
      end else
        Parts.Add(CurStr);
    until CurPos=0;
  finally
    Parts.EndUpdate();
  end;
end;
И всё бы было хорошо, если-бы скрипт не вылетал по "Exception: List index out of bounds"

Как можно предвидеть, что List index out of bounds?
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

например:
Delimeter = ';'
CurStr = 'abcd;'
CurPos:= Pos(Delimeter, CurStr); = 5

Copy(CurStr, CurPos+Length(Delimeter),Length(CurStr)-CurPos-Length(Delimeter)+1); = copy(CurStr,5+1,5-5-1+1) = copy(CurStr,6,0) < попытка скопировать 0 символов начиная с 6го!!! , а их там всего 5!!

если Length(Delimeter)>1 тогда такого не будет

Т.е. нужна проверка не находится ли Delimeter в конце строки.
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Post by pickwill »

Ядрёная комбинация парсера с последующим анализом, по рекомендации Vizit0r'а, решила эту проблему. Если кто-то с Махаона будет читать этот сабж, то во избежании попадания законченного и работоспособного скрипта в руки врагов нашей гильдии, он (скрипт) размещаться тут не будет.
Всем ещё раз спасибо за внимание и за помощь.
Post Reply