Кто знает встроенный ассемдлер Delphi , подскажите как мне передать в сам ассемблер строку и найти в ней первый индекс первого символа " . " (точка) . Нужно очень срочно . Заранее очень благодарен .
DillerInc
28-12-2006, 20:57
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;
Учти,что строка -- это тот же массив,поэтому индексация первого элемента ведётся от нуля.
Всё ж...какая гадость эта ваша заливная рыба...это я про Дельфи.
Огромное спасибо !!! Ты меня выручил !!!
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.