Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Jhakal
Ну,можно примерно так:
Код: Выделить весь код
var
 s: String;
 Len: Integer;
 Index: Integer;
begin
if edInput.Text <> '' then
 begin
  s := edInput.Text; // Чем-то заполняем строку s
  Len := Length(s);  // Вычисляем её длину
  asm
   push  edi           // Сохраняем регистры EDI, ECX
   push  ecx
   mov   edi, s       // EDI -- указатель на строку        
   mov   ecx, Len   // ECX -- счётчик
   mov   al, $2E     // AL -- искомый элемент; байт $2E есть "точка"
// выполняем команду сканирования цепочки пока в последней не встретится элемент,
// совпадающий с элементом в регистре AL
   repnz scasb      
   inc   ecx             // Инкремент счётчика,чтобы вернутся чуть назад т.к., когда мы просканировали элемент,мы его "проехали"
   mov   eax, Len
   sub   eax, ecx    // Вычитаем счётчик из общей длины строки
   mov   Index, eax   // Сохраняем результат
   pop   ecx
   pop   edi           // Восстанавливаем регистры EDI, ECX
  end;
 end;
end;
Учти,что строка -- это тот же массив,поэтому индексация первого элемента ведётся от нуля.

Всё ж...какая гадость эта ваша заливная рыба...это я про Дельфи.

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 20:57, 28-12-2006 | #2