Todo seria mas facil si se tuviera un separador estandar (y preferiblemente no tan comun) entre los números y los capitulos. Por ejemplo:
1.) Intriducción
el separdor es un punto y un paréntesis cerrado, podria ser simplenete el paréntesis... o un doble guon asi:
1--Introducción
Para esto, yo utilizaria la siguiente función:
Código:
Function get_NumeroCapitulo(pCadena:String; pSepardor:string):Integer
var i, vPos:Integer;
vCadena:string;
ves_numerico:Boolean;
Begin
Result:=-1;
vPos:=Pos(pSeparador,pCadena);
if vPos>0 then
begin
// si existe el caracter separador,
// verifica si hay un número a la izquierda.
vCadena:=Trim(Copy(pCadena,1,vPos-1));
if vCadena:='' then
begin
ves_numerico:=True;
//Comienza el ciclo para
//verificar si es numerico
For i:=1 to length(vCadena) do
begin
if not (vCadena[i] in ['0'..'9']) then
begin
ves_numerico:=False;
Break;
end;//if
end; //for i
if ves_numerico then
Result:=StrToint(vCadena);
end; //if vCadena
end; //vpos
end;