Substituir Caracters

17/12/2003

1

Como faço para ter apenas caracteres [a..z] [A..Z] [0..9] e não estes abaixo
#13, 9

fiz uma rotina q sustitui caracter 9 por ´ ´ (cinco espaços) mas não funciona direito pq quando o TAB foi dado depois de duas letras ele acrescenta cinco espaço e só poderia colocar 3 espaços.....

gustavo


Responder

Posts

17/12/2003

Beppe

2)

function TabsToSpaces(const S: String; TabWidth: Integer): String;
var
  I, L: Integer;
begin
  Result := ´´;
  with TStringStream.Create(´´) do
  try
    L := 1;
    for I := 1 to Length(S) do
    begin
      case S[I] of
        9: WriteString(StringOfChar(´ ´, TabWidth - (I - L) mod TabWidth));
      else
        case S[I] of
          10, 13: L := I;
        end;
        WriteString(S[I]);
      end;
    end;
    Result := DataString;
  finally
    Free;
  end;
end;



Responder

17/12/2003

By Alemão

Como faço para usar esta funcao....

Utilizei assim....

TabsToSpaces(edTexto.Lines[i],7);

7 é o numero de espaços do TAB....

mas não substitui por espaços...


Responder
edTexto é um memo certo?

então:

edTexto.Text := TabsToSpaces(edTexto.Text,7);
ouedTexto.Lines.Text := TabsToSpaces(edTexto.Lines.Text,7);

ou ainda:

L := edTexto.LineFromChar(edTexto.SelStart);
edTexto.Lines[L]:= TabsToSpaces(edTextol.Lines[L],7);
[i:99edd76258]{muda só a linha em que o cursor está}[/i:99edd76258]


Responder

17/12/2003

By Alemão

Cara ainda não funcionou...

acho q esta calculando errado o tamanho do TAB....

posso te mandar os fontes pra vc dar uma olhada???

me passa teu (e 1/2)

o meu é

gustavoschepp(arroba)irani(ponto)com(ponto)br


Responder
[i:11f0379eb0]gustavoschepp(arroba)irani(ponto)com(ponto)br[/i:11f0379eb0]

Tentando evitar Spam?

a função acima(do Ataliba) leva em consideração a coluna

ela vai arrumar os tabs de 7 em 7 colunas


Responder

17/12/2003

By Alemão

mas não funciona, pq eu testei e ele coloca espaços diferentes de 7 e onde deveria calcular menos espaços, esta colocando a mais....


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira