-
Larin © (24.12.17 10:25) [0]Ребят, кто-нибудь может перевести этот asm код в Delphi код?function TTreeNodeList.IndexOf(Item: TTreeNTNode): Integer; assembler;
// finds Item's index in the list
// EAX contains the Self reference (address of this instance)
// EDX contains Item
asm
PUSH EBX
PUSH EDI
MOV ECX, EAX.FCount // number of entries
JECXZ @NotFound // no search, if no entries
MOV EBX, ECX // keep count for index calc.
MOV EDI, EAX.FList // start address
MOV EAX, EDX // search value
REPNE SCASD // search the value
JNZ @NotFound // jump if not found
MOV EAX, EBX
SUB EAX, ECX // calculate index
DEC EAX // it's zero-based
JMP @Finish
@NotFound: MOV EAX, -1
@Finish: POP EDI
POP EBX
end; -
Внук © (24.12.17 17:23) [1]function TTreeNodeList.IndexOf(Item: TTreeNTNode): Integer;
var
I: Inetger;
begin
Result := -1;
for I := 0 to FList.Count - 1 do
if FList[I] = Item then
begin
Result := I;
break;
end;
end; -
Внук © (24.12.17 17:31) [2]Без опечаток не обошлось, конечно.
Так, наверно, будет точнее
function TTreeNodeList.IndexOf(Item: TTreeNTNode): Integer;
var
I: Integer;
begin
Result := -1;
for I := 0 to Count - 1 do
if FList[I] = Item then
begin
Result := I;
break;
end;
end; -
Внук © (24.12.17 17:32) [3]И еще раз.function TTreeNodeList.IndexOf(Item: TTreeNTNode): Integer;
var
I: Integer;
begin
Result := -1;
for I := 0 to FCount - 1 do
if FList[I] = Item then
begin
Result := I;
break;
end;
end; -
Larin © (24.12.17 17:44) [4]
> Внук © (24.12.17 17:32) [3]
Спасибо большое!