Original von CDW
Wenn Du den "Flaschenhals" hast wäre wohl am einfachsten:
per IID-King Sleep API hinzufügen (sollte aber eher schon vorhanden sein, weil bei Borland-VCL Zeug so ziemlich alles genutzt wird

)
In Olly eine "Codecave" suchen - also freien Breich im Code, der mit 00 gefüllt ist (z.B am Ende der Codesection, wo der Linker wegen Section-Ausrichtung öfters einen 00 Bereich macht) ). Aber aufgepasst: nicht zu früh freuen und irgendwo dann den Code reinschreiben, denn es gibt sowohl virtuelles wie physikalische Section-Ausrichtung - also einmal im File/Exe selber und einmal im Speicher, wenn die Executable läuft. Dabei ist der physikalische Wert meistens viel kleiner als der virtuelle (öfters 4096 und 512 Byte) - das heißt im Speicher sieht man paar tausend 00 und physikalisch sind nur einige dutzend oder hundert vorhanden. Schreibt man seinen Code in den Bereich rein, der physikalisch nicht existiert, kann man die Änderung nicht abspeichern
In die "Codecave" dann gewünschten Code reinschreiben (entweder den "Sleep" Aufruf, falls Sleep schon im Programm vorhanden ist oder per LoadLibrary und GetProcAddress "Sleep" Adresse herausbekommen (oder vorher per IDD King hinzufügen).
Jetzt noch aus dem "Flaschenhals"-Code an geeignerter Stelle einen Jump
zum eingefügten Code machen und ans Ende des eingefügten Codes einen JMP zurück.
Sollte sich keine Codecave finden lassen (was ich bei einem Standard-Delphi Programm nicht gleube

) kann man auch mit LordPE oder ToPo einen neue Section hinzufügen, die man dann nach belieben nutzen kann.
Die Herausforderung wäre allerdings den Verursacher des Übels zu finden - also den Flaschenhals.Je nach Programm und Code imho nicht ganz einfach. Denn wenn es die Delphi-interenen Bibliotheken nutzt wird man nur schwer per tracing darauf kommen - und die Delphiinternen Sachen zu patchen, die auch an anderen Codestellen aufgerufen werden könnte Nebeneffekte haben. Dabei wird man öfters die "Auswirkunen" (also derade ausgeführten Code) sehen, als den Verursacher (den Aufrufer) - jedoch sollte nach einiger Zeit (laufen lassen, pause, schauen wo man ist, anschauen von Call-stack (ALT+K) ) sich das einkreisen lassen.
EDIT: toll, da schreibt man was und Du wirst in der Zeit schon fertig
Ich lass es mal stehen, damit es nicht ganz umsonst war und vielleicht paar Google Bots was davon haben
PS: auch beachtet dass Olly einen direkten "CALL Sleep" als Call auf die Kerneladresse umsetzt (also direkt die Adresse reinschreibt und nicht etwa per IAT Umweg)? Sonst gibt es nach dem nächsten größeren Update oder auf einem anderen PC eventuell Probleme, weil die Adresse sich ändert bzw. verschiebt.