No se si me estoy perdiendo algo. Pero lo primero que veo es que estas utilizando el carácter #0, y recordemos que ese carácter se utiliza para marcar el final de una cadena. Por lo tanto cuando haces esto:
Código Delphi
[-]
(StrComp(Pchar(buffer), Pchar(sStartCross)) = 0)
Como sStartCross comienza por #0, se considera una cadena vacía, así que en el momento en que el contenido de buffer también comience por #0 la condición se cumplirá, es decir, no se tendrán en cuenta el resto de caracteres. Yo te sugiero que para hacer comprobaciones en las que interviene el carácter #0 utilices funciones como CompareMem, mucho mas rápida, y no te metas a utilizar funciones para el tratamiento de cadenas