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.
© OSzone.net 2001-