powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Assember to Delphi
5 сообщений из 5, страница 1 из 1
Assember to Delphi
    #39574926
Subway_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, кто-нибудь может перевести этот asm код в Delphi код?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
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;



Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
Assember to Delphi
    #39574937
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Subway_,

Обычный цикл по элементам FList
...
Рейтинг: 0 / 0
Assember to Delphi
    #39574952
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Subway_,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function TTreeNodeList.IndexOf( Item : TTreeNTNode ) : integer;
var
  i : integer;
begin
  if FCount = 0 then
    Result := -1
  else
    for i := 0 to Pred( FCount ) do
      if FList[i] = Item then
      begin
        Result := i;
        break;
      end;
end;



Если для FCount и FList описаны property, то можно (и нужно) использовать Count и List.

С уважением, Polseov.
...
Рейтинг: 0 / 0
Assember to Delphi
    #39574954
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Polesov
Ашипка, подправил.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function TTreeNodeList.IndexOf( Item : TTreeNTNode ) : integer;
var
  i : integer;
begin
  Result := -1;
  for i := 0 to Pred( FCount ) do
    if FList[i] = Item then
    begin
      Result := i;
      break;
    end;
end;
...
Рейтинг: 0 / 0
Assember to Delphi
    #39574959
Subway_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Polesov> Polesov
Ашипка, подправил.


Спасибо большое!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Assember to Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]