Ese código está algo raro, yo lo sé. Deja te cuento el por qué.
Desde que comencé a usar Delphi en Windows 2000 y ahora en Windows XP me sucedían ocasionalmente comportamientos similares al que te sucede a tí aunque en otros casos; a veces colocando un ListView, a veces con un ImageList, etc.
Estuve buscando en la red y me encontré que esto del ntdll.DbgUserBreakPoint es conocido; al parecer algún programador en Microsoft se dejó una instrucción INT3 (punto de corte o 'break point') en el código de la librería ntdll.dll
El código que te puse lo publicó Peter Morris (conocido e los grupos de noticias de Borland) en
http://www.howtodothings.com/showart...sp?article=654 y, en efecto, soluciona el problema.
No expliqué esto antes porque no sé a ciencia cierta si eso es lo que ocurre. Lo que sí es cierto, es que, de ser éste el problema, entonces no tienes de qué preocuparte ya que sólo se presenta cuando estás haciendo un 'debug' de la aplicación y no ya en ejecución.
Para usarlo simplemente pégalo en la sección
initialization del formulario:
Código:
unit Unit1;
interface
uses
bla, bla, bla;
type
TForm1 = class(TForm)
end;
var
Form1: Form1;
interface
procedure PatchINT3;
{
Aquí pegas el código
}
initialization
// Llamada al procedimiento
PatchINT3;
end.
Si no es eso pues ya buscaremos por otro lado.
// Saludos