• 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]


    Спасибо большое!
Есть новые Нет новых   [118243   +31][b:0][p:0.002]