Ir al contenido


Foto

[TRUCO DELPHI] Eliminar los saltos de Linea.


  • Por favor identifícate para responder
5 respuestas en este tema

#1 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 09 diciembre 2016 - 02:16

[TRUCO DELPHI] Eliminar los saltos de Linea.


delphi
  1. function DeleteLineBreaks(const S: string): string;
  2. var
  3. Source, SourceEnd: PChar;
  4. begin
  5. Source := Pointer(S);
  6. SourceEnd := Source + Length(S);
  7. while Source < SourceEnd do
  8. begin
  9. case Source^ of
  10. #10: Source^ := #32;
  11. #13: Source^ := #32;
  12. end;
  13. Inc(Source);
  14. end;
  15. Result := S;
  16. end;

Nota: Esta funcion no utiliza la Unidad SysUtils

 

Saludos!


Editado por sir.dev.a.lot, 09 diciembre 2016 - 09:49 .

  • 1

#2 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 09 diciembre 2016 - 02:29

Usando StringReplace
 
 


delphi
  1. function DeleteLineBreaks(const S: string): string;
  2. begin
  3.   Result:= StringReplace(S, #13+#10, #32, [rfReplaceAll]);
  4.   Result:= StringReplace(Result, #13, #32, [rfReplaceAll]);
  5.   Result:= StringReplace(Result, #10, #32, [rfReplaceAll]);
  6. end;

Saludos.


  • 1

#3 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 09 diciembre 2016 - 04:31

Usando StringReplace
 
 


delphi
  1. function DeleteLineBreaks(const S: string): string;
  2. begin
  3.   Result:= StringReplace(S, #13+#10, #32, [rfReplaceAll]);
  4.   Result:= StringReplace(Result, #13, #32, [rfReplaceAll]);
  5.   Result:= StringReplace(Result, #10, #32, [rfReplaceAll]);
  6. end;

Saludos.

 

 

Interesante alternativa. Gracias


  • 0

#4 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 09 diciembre 2016 - 09:47


delphi
  1. function MultiStringReplace(const S : string; OldPattern, NewPattern : array of string;
  2. Flags : TReplaceFlags): string;
  3. var
  4. i : Integer;
  5. begin
  6. Assert(Length(OldPattern) = Length(NewPattern), 'Longitud de patrones difiere.');
  7. Result := S;
  8. for i := Low(OldPattern) to High(OldPattern) do
  9. Result := StringReplace(Result, OldPattern[i], NewPattern[i], Flags);
  10. end;
  11.  
  12. Ejemplo:
  13. ShowMessage(MultiStringReplace(Cadena,[#10,#13,#13+#10],[#32,#32,#32],[rfReplaceAll]));

Saludos!


  • 1

#5 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.965 mensajes
  • LocationMadrid - España

Escrito 10 diciembre 2016 - 11:04

Rizando el rizo:
 
Borra todos los saltos de carro, de línea y multi-espacios dentro de una cadena dada:

delphi
  1. function DeleteEndln(S: String): String;
  2. var
  3. Cadena: PCHAR;
  4. begin
  5. Cadena:= @S[1];
  6. asm
  7. mov edi, Cadena
  8. mov esi, edi
  9. @loop1:
  10. cmp byte ptr [esi], $0D
  11. jne @no0D
  12. jmp @endl
  13. @no0D:
  14. cmp byte ptr [esi], $0A
  15. jne @sigue
  16. @endl:
  17. mov byte ptr [esi], $20
  18. @spaces:
  19. cmp word ptr [esi-1], 2020h
  20. jne @sigue
  21. inc esi
  22. jmp @spaces
  23. @sigue:
  24. movsb
  25. cmp byte ptr [esi], $0
  26. jne @loop1
  27. mov word ptr [edi], 0
  28. end;
  29. Result:= Cadena;
  30. end;

Saludos.
  • 1

#6 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 25 diciembre 2016 - 12:18

Si, ... este debe de ser el resultado optimizado de un codigo ya optimizado.

 

Gracias @Escafrandra.

 

Saludos!


  • 1