Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Разбиватель строк
Разбиватель строк
помница была такая вещь, как strbreakApart.. разбивать строку на строки.. очень надо.. кто та скиньте плз..
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;
Пример использования:
Code: Select all
program test;
var
Tmp : TStringList;
i : Integer;
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;
Begin
Tmp := TStringList.Create();
StrBreakApart('Text1<BR>Text2<BR>Text3<BR>Text4','<BR>',Tmp);
// После вызова Tmp содержит
// Text1
// Text2
// Text3
// Text4
// ...
for i := 0 to (Tmp.Count - 1) do AddToSystemJournal(Tmp.Strings[i]);
Tmp.Free;
End.
Хочу обратить внимание на:
1. Строки в списке индексируються с 0 а не с еденицы!
(Индекс первой строки - 0, индекс последней - (Count - 1))!
2. После использования списка строк надо незабыть вызвать метод Free!
Пытался сделать следующее:
после
из строки журнала
выводить для дальнейшего пользования только результат, без System:
Хотел спросить это вообще можно сделать?
или как еще можно получить название предмета?
после
Code: Select all
ClickOnObject(FindTypeEx($FFFF,$FFFFFFFF,backpack,false));
Code: Select all
System: tinker tool
Хотел спросить это вообще можно сделать?
или как еще можно получить название предмета?
Code: Select all
var SL : TStringList;
...
ClickOnObject(finditem)
if WaitJournalLine(Now, ': ', 3000) then
begin
SL := TStringList.Create;
StrBreakApart(LastJournalMessage, ': ', SL);
if SL.Count > 0 then AddToSystemJournal('В контейнере осталось '+IntToStr(FindFullQuantity)+' '+SL.Strings[0])
SL.Free;
end
а getName(...) - не подходит?Acronym wrote:...
или как еще можно получить название предмета?
Code: Select all
clickOnObject(finditem);
wait(200); //или checkLag
itemName := getName(finditem);
Оно же вроде не работает?CFA wrote:а getName(...) - не подходит?Acronym wrote:...
или как еще можно получить название предмета?Code: Select all
clickOnObject(finditem); wait(200); //или checkLag itemName := getName(finditem);
L'inconnu, спасибо за подсказку, попробую.