Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 05-11-2003
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 05-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 05-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
delphi.com.ar comentó:
Te recomiendo buscar información sobre la clase TParser... por ejemplo: http://www.delphipages.com/tips/copyview.cfm?ID=123
Saludos!
Como siempre, es grato comenzar el día aprendiendo algo nuevo. Hice una pequeña búsqueda en Google y me encontré este enlace:

http://www.rimrocksoftware.com/tparser.html

Entre otras cosas establece

Cita:
TParser cannot handle Pascal comments, so it cannot be considered a general purpose parsing class. It is intended to parse a correctly formatted textual form description.
¿Sabes de algún analizador de este tipo que sí maneje comentarios?

// Gracias
Responder Con Cita
  #5  
Antiguo 05-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
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;
Aclaro que lo hice recién y no lo probé en profundidad!!!

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;
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 05-11-2003
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
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;
O por ejemplo si queremos mostralas en un memo (o cualquier otro componente que almacene lineas):

Código:
Memo1.Lines.CommaText:= 'esto es una prueba';
Salud2 !!!
Responder Con Cita
  #7  
Antiguo 06-11-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Al final he usado la funcioncita copy y funciona a las mil maravillas!!
Gracias a todos por la ayuda prestada.
Un saludo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:45:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi