Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola roman.

Cometí un error de copia/pega de una de las varias pruebas,de ahí el SetLength . (Aunque acabo de hacerle unas comprobaciones e igual funciona con espacios sobre el final)

Debería haber sido esta:
Código Delphi [-]
function IgnoreExtraSpaces(const str: string): string;
var
  i: integer;
begin
  for i := 1 to Length(str) do
    if (str[i] <> ' ') or (str[i+1] <> ' ') then
      Result := Result + str[i];
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por Casimiro Notevi fecha: 14-10-2015 a las 08:57:02. Razón: var2 -> var :)
Responder Con Cita
  #2  
Antiguo 14-10-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
También se puede hacer una función recursiva, pero como se pide que sea lo más eficiente posible, habría que probar si la recursividad es más eficiente que el bucle
Responder Con Cita
  #3  
Antiguo 14-10-2015
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:
Empezado por ecfisa Ver Mensaje
Hola roman.

Cometí un error de copia/pega de una de las varias pruebas,de ahí el SetLength . (Aunque acabo de hacerle unas comprobaciones e igual funciona con espacios sobre el final)
En esta versión, S[I+1] se sale de la cadena al final, lo cual puede ser inseguro. Supongo que por eso habías agrandado en 1 la longitud de la cadena en la versión anterior; aunque aún tendrías que asegurarte que en ese lugar extra no tienes un espacio que de casualidad ande por ahí. ¿Por qué no así?

Código Delphi [-]
function IgnoreExtraSpaces(str: string): string;
var
  i: integer;
begin
  // SetLength(str, Length(str)+1);
  str := str + #0;
  for i := 1 to Length(str)-1 do
    if (str[i] <> ' ') or (str[i+1] <> ' ') then
      Result := Result + str[i];
end;

// Saludos
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo quitar espacios inicial y final en cadena bulc Varios 0 22-03-2014 18:24:33
Quitar Espacios en Sql El_Perrito Firebird e Interbase 3 25-02-2005 12:49:12
Quitar espacios al final de una cadena gescoto99 SQL 1 04-08-2004 00:02:43
Quitar espacios de campos CHAR cartmanrules Firebird e Interbase 3 22-07-2004 10:53:06
Quitar espacios en blanco Javier_A OOP 3 09-06-2004 10:29:27


La franja horaria es GMT +2. Ahora son las 08:59:44.


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