Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - TTable - filter

Uvnitře je použita tato funkce (možno jí nacpat dovnitř).

{------------ Pascalské POS optimalizované pro hledání 1 znaku  ---------------------}
function PosChar (const c: char; const s: string): LongInt; register; assembler;
{	c	:= Znak co hledáme }
{	s	:= Kde to hledáme  }
{Vrací (v EAX): Pozici v s (index znaku), nenalezne-li se c v s, vrací 0 }
asm
	PUSH	EDI

	MOV	EDI, s;		{ Point EDI to s       }
	CMP	EDI, 0;
	JZ	@Kulovy;	{ Řetěz je NIL, to jest prázdný }

	MOV	AL, c;		{ AL znak co hledáme   }
	MOV	ECX, -4 (EDI);	{ Délka řetězu do ECX }
	MOV	EDX, EDI;	{ Úschova ad. začátku řetězu }

	CLD;			{ SCASB pojede nahoru }
	REPNE	SCASB;
	JNE	@Kulovy;	{ Nenašlo se to }

	MOV	EAX, EDI;	{ EAX kde to skončilo + 1 }
	SUB	EAX, EDX;	{ EAX je pozice v řetězu }
	JMP	@Finish;

@Kulovy:XOR	EAX, EAX;	{ EAX := 0 --> že se našlo prd }

@Finish:POP	EDI;
end;

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny