![]() |
Recorrer un String
Hola. Tengo un problema:
Necesito recorrer nombre de archivos como String: ACA01-05-07-06.doc ó VA05-06-07-08.PDF y necesito identificar las primeras letras y enseguida ir formando otro string con las primeras letras más los siguientes dos digitos, ejemplo: ACA01 ACA05 ACA07 ACA06 VA05 VA06 VA07 VA08 y después de que va separando el string debe hacer un busqueda (función que ya tengo) en una BD. parte del codigo que estoy utilizando es este: Funcion para identificar Letras procedure TMain.OpenArrayLetras(const constArray: array of const); var i : Integer; begin for i := 0 to 54 {High(constArray)} do begin Abcd:=ConstArray[i].VChar; if Abcd=LetraFile then break; end; end; Funcion para identificar Numeros procedure TMain.OpenArrayNumero(const constArray: array of const); var i : Integer; begin for i := 0 to 9 {High(constArray)} do begin ABC123:=ConstArray[i].VChar; if ABC123=NumFile then break; end; end; procedure TMain.AdvSmoothButton4Click(Sender: TObject); var Letra, numero, Punto: Integer; Final, FinalNum, Plana, PlanaNum: String; begin //Punto:='.'; PkaCmp:='aca01-02-99-16.PDF'; punto:=Pos('.',PkaCmp); Delete(PkaCmp,Punto,4); //Delete(PkaCmp,Punto+1,3); for letra := 1 to Length(PkaCmp) do begin LetraFile:=PkaCmp[Letra]; OpenArrayLetras(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ', 'o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H', 'I','J','K','L','M','N','Ñ','O','P','Q','R','S','T','U','V','W','X','Y','Z']); if not (LetraFile=Abcd) then Begin //inicio de busqueda de nomenclatura Final:=PkaCmp; Delete(Final, Letra, Length(Final)); Plana:=Final; NomPub:=Plana; Memo2.Lines.Add(Plana); //termino de busqueda de nomenclatura //inicio de busqueda de dos digitos de la plana //Se elimina la nomenclatura y se dejan los numeros de página PkaCmp2:= Copy(PkaCmp,Letra,length(PkaCmp)); for numero := 1 to Length(PkaCmp2) do Begin NumFile:=PkaCmp2[Numero]; OpenArrayNumero(['0','1','2','3','4','5','6','7','8','9']); if Not (NumFile=ABC123) then Begin FinalNum:=PkaCmp2; PlanaNum:= copy(FinalNum, ((numero)-(2)),2 ); Digito:=PlanaNum; PlanaBusqueda:=NomPub+Digito; Memo2.Lines.Add(PlanaBusqueda); end; end; end; end; end; |
Dos cosillas: primero, deberías utilizar las etiquetas [code]... [/code] (el botón con el símbolo "#" o uno de los tres siguientes)
Y segundo, ¿cuál es exactamente tu consulta? |
buenas, soy nuevo aqui y haber q tal esta solucion
si hay algun error de codigo perdoneme |
Recorrer Sting
Hola, creo que no me di entender mucho, pero aquí escribo el código ya corregido y cual es exactamente mi problema:
Gracias y saludos Código:
|
A ver, o no entiendo lo que quieres hacer o está muy complicado el método que usas.
Voy a partir de esto que pones en tu código: Cita:
La idea es: 1. Quitar la extensión 2. Separar la parte de las letras y la parte con la secuencia numérica. 3. Por cada número en la secuencia, formar una cadena compuesta por las letras y el número. La primera parte es muy sencilla usando la función ChangeFileExt. Para la segunda parte, si -como mencionas en el comentario- la cadena sólo puede contener dos o tres letras, entonces basta leer el tercer caracter para saber cuántas letras tenemos. Si es un número, quiere decir que sólo hay dos letras, y en caso contrario tres. Una vez determinado esto, es fácil separar las letras con la función Copy y, así mismo, la secuencia de números como 01-06-82-11. Ahora bien, esta secuencia consiste de números separados por un guíon. Así que, para aislar cada número, viene muy práctico el uso de un TStringList y su propiedad DelimitedText. Una vez que tengamos en una lista los distintos números, ya sólo es cosa de recorrer dicha lista y concatenar las letras con el número en turno. Aquí pongo la expresión de mi idea:
La forma de usar este procedimiento sería así, por ejemplo, para poner las cadenas resultantes en un Memo:
// Saludos |
| La franja horaria es GMT +2. Ahora son las 00:58:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi