Fórum Passar uma TSTRING como parametro #243856

21/07/2004

0

Essa é boba....tenho 2 memos e um botao processa....quero que ao pressionar o botao, o memo 2 tenho os valores do memo 1 em maiuscula...fiz uma funçao para isso, passado memo1.lines como parametro...acontece q a mundanca acaba refletindo na memo1 tb...o q estou fazendo de errado.

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo2.Lines := Processa(Memo1.Lines);
end;

function TForm1.processa(Texto: TStrings): TStrings;
var
I: Integer;
begin
for I := 0 to (Texto.Count - 1) do
Texto.Strings[I] := UpperCase(Texto.Strings[I]);
Result := Texto;
end;


Mago M3rl1n

Mago M3rl1n

Responder

Posts

21/07/2004

Lucas Silva

Tem um jeito mais fácil de fazer isso;

memo1.lines.text := UpperCase(memo2.lines.text);



Responder

Gostei + 0

21/07/2004

Mago M3rl1n

So utilizei o codigo acima como exemplo....o que eu quero e passar uma tstring como parametro vindo de uma tmemo...e na funcao que estou desenvolvendo eu possa trabalhar na tstring sem refletir na tmemo que originou o parametro....


Responder

Gostei + 0

21/07/2004

Paulo_amorim

Olá

Pode ter um jeito mais fácil, mas uma saída eh vc colocar o result antes
function Processa(Texto: TStrings): TStrings;
begin
  Result.Assign(TExto);
(...)


A partir daí vc não trabalha mais com Texto, mas sim com Result

Espero que ajude
Até+


Responder

Gostei + 0

21/07/2004

Mago M3rl1n

Esse método não deu....deu erro de violação de acesso...alguma outra sugestão ?


Responder

Gostei + 0

21/07/2004

Cabelo

Colega..

Assim dá certo :

procedure TForm1.Button1Click(Sender: TObject);
var v_teste : TStringList;
begin
v_teste := TStringList.Create;
v_teste.AddStrings(Memo1.Lines);
Memo2.Lines := Processa(v_teste);
end;

function TForm1.processa(Texto: TStrings): TStrings;
var
I: Integer;
begin
for I := 0 to (Texto.Count - 1) do
Texto.Strings[I] := UpperCase(Texto.Strings[I]);
Result := Texto;
end;

espero ter ajudado..

Cabelo


Responder

Gostei + 0

21/07/2004

Mago M3rl1n

Valew....apenas coloquei a tstringlist na função para receber o parametro texto....


Responder

Gostei + 0

21/07/2004

Paulo_amorim

[quote:295f99bb01=´Mago M3rl1n´]Esse método não deu....deu erro de violação de acesso...alguma outra sugestão ?[/quote:295f99bb01]
Olá

Desculpe, esqueci que tem que criar
tem que incluir a linha
Result := TStringList.Create;

daí sim ele funciona

ou então, ao invés de usar Result, coloque uma variável local na função Processa e faça a variável receber o parâmetro Texto
var s: TStrings;
begin
s := TStringList.Create;
s.Assign(Texto);


Asismtambém deve funcionar
Até+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar