Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Нужна помощь с ассемблером в Delphi (найти точку в строке). (http://forum.oszone.net/showthread.php?t=76826)

Jhakal 28-12-2006 18:01 530194

Нужна помощь с ассемблером в Delphi (найти точку в строке).
 
Кто знает встроенный ассемдлер Delphi , подскажите как мне передать в сам ассемблер строку и найти в ней первый индекс первого символа " . " (точка) . Нужно очень срочно . Заранее очень благодарен .

DillerInc 28-12-2006 20:57 530242

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;

Учти,что строка -- это тот же массив,поэтому индексация первого элемента ведётся от нуля.

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

Jhakal 29-12-2006 17:44 530520

Огромное спасибо !!! Ты меня выручил !!!


Время: 01:19.

Время: 01:19.
© OSzone.net 2001-