Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Renombrar solo un nombre (https://www.clubdelphi.com/foros/showthread.php?t=75389)

Paulao 19-08-2011 02:17:27

Renombrar solo un nombre
 
este es parte de mi codigo.
Código Delphi [-]
posicao := Pos('SP', s);
    if posicao > 0 then
      s := StringReplace(s,'SP','SPO',[rfReplaceAll]);
Mis archivos viene asi:
Código Delphi [-]
20000528-38939-SP-E03-NOT.pdf
Pero as veces viene asi:

Código Delphi [-]
20000528-38939-SP-ESP03-NOT.pdf
Y cuando si renombra, queda asi:
Código Delphi [-]
20000528-38939-SPO-ESP03-NOT.pdf
y no asi:
Código Delphi [-]
20000528-38939-SPO-ESPO03-NOT.pdf

Si lo hago asi: POS('-SP-',s), no renombra las carpetas que tiene el mismo nombre(SP), i si lo dejo asi como estás el renombra todas las palavrs que tiene SP, y no esto que yo quiero.

ecfisa 19-08-2011 03:24:06

Hola Paulao.

Por lo que creo haber entendido solamente queres que te reemplaze la primera aparición de SP.

Es decir que la modificación que queres es:
20000528-38939-SP-ESP03-NOT.pdf
20000528-38939-SPO-ESP03-NOT.pdf



Si no entendí mal la solución es:
Código Delphi [-]
var
  Cad, s: string;
begin
   Cad:= '20000528-38939-SP-ESP03-NOT.pdf';
    s:= StringReplace(Cad,'SP','SPO',[]);  // [] solo la primera ocurrencia
    ...
end;

Saludos.

Paulao 19-08-2011 14:33:29

yo hizo un if y resolvio,pero si yo no pongo [rfReplaceAll] el solo ira substituir la primera ocurrencia? Si es asi, voy cambiar mis If por este codigo, es mas elegante, pero ahora no tengo como hacer los testes, solo a lanoche cuando llego en mi casa.

ecfisa 19-08-2011 14:43:36

Cita:

si yo no pongo [rfReplaceAll] el solo ira substituir la primera ocurrencia?
Hola Paulao.

Si, así es. ;)

Un saludo.


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

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