FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
meterle mano a un string
Hola, me gustaria saber si teniendo una variable string con un tamaño de caracteres predefinido puedo "meterle mano" y por ejemplo, si en la variable string hay dos palabras, pues coger cada palabra por separado y meterlas en otras nuevas variables.
No se si me he explicado bien, pero basicamente lo que quiero es que teniendo un string poder partirlo en 2, teniendon en cuenta que la estructura siempre sera la misma. Un saludo. |
#2
|
||||
|
||||
Mirate la funcion copy en la ayuda de delphi, que te permite obtener subcadenas de una cadena original, indicando desde que caracter quieres copiar, y cuantos caracteres copiar.
__________________
Héctor Geraldino Software Engineer |
#3
|
||||
|
||||
Te recomiendo buscar información sobre la clase TParser... por ejemplo: http://www.delphipages.com/tips/copyview.cfm?ID=123
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#4
|
||||
|
||||
Cita:
http://www.rimrocksoftware.com/tparser.html Entre otras cosas establece Cita:
// Gracias |
#5
|
||||
|
||||
Ahora que lo pienso... me parece que le sugerí matar una mosca con un misil, ademas le puede traer problemas... Con respecto a lo de los comentarios, no conozco si Delphi trae alguna herramienta con este propósito, pero se puede hacer un pequeño procedure con este propósito, ya quen hay que preocuparse por manejar los tipos de datos, comentarios...:
Código:
procedure ParseText(Text: PChar; const AResult: TStrings); var L, E: PChar; R: string; begin L := Text; E := StrEnd(Text); while Text < E do begin Inc(Text); if not (Text^ in ['A'..'Z', 'a'..'z', '_']) then begin if L <> Text Then begin SetString(R, L, Text-L); AResult.Add(R); end; L := Text + 1; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ParseText('Delphi es una herramienta Formidable!', Memo1.Lines); end; Mi Procedure Original (Por si a alguien le gusta mas con strings): Código:
procedure ParseText(AText: string; const AResult: TStrings); var iLen, iLastPos, iPos: Integer; begin iLastPos := 1; AResult.Clear; AText := AText + ' '; { Para evitar preguntar reiteradamente por iPos = iLen } iLen := Length(AText); for iPos := 1 to iLen do if not(AText[iPos] in ['A'..'Z', 'a'..'z', '_']) Then begin if (iPos <> iLastPos) Then AResult.Add(Copy(AText, iLastPos, iPos-iLastPos)); iLastPos := iPos+1; end; end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#6
|
|||
|
|||
Existe la posibilidad de usar la
propiedad CommaText del objeto TStrings, aunque tiene sus limitaciones (usa tanto el espacio como la coma para separar las palabras): Código:
var i: integer; Palabras:TStringList; begin Palabras:= TStringList.Create; try Palabras.CommaText:= 'esto es una prueba'; for i:=0 to Palabras.count-1 do begin ShowMessage(Palabras[i]); end; finally Palabras.Free; end; Código:
Memo1.Lines.CommaText:= 'esto es una prueba'; |
#7
|
|||
|
|||
Al final he usado la funcioncita copy y funciona a las mil maravillas!!
Gracias a todos por la ayuda prestada. Un saludo. |
|
|
|