Passar uma TSTRING como parametro

Delphi

21/07/2004

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

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

21/07/2004

Tem um jeito mais fácil de fazer isso;

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



GOSTEI 0
Mago M3rl1n

Mago M3rl1n

21/07/2004

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....


GOSTEI 0
Paulo_amorim

Paulo_amorim

21/07/2004

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é+


GOSTEI 0
Mago M3rl1n

Mago M3rl1n

21/07/2004

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


GOSTEI 0
Cabelo

Cabelo

21/07/2004

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


GOSTEI 0
Mago M3rl1n

Mago M3rl1n

21/07/2004

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


GOSTEI 0
Paulo_amorim

Paulo_amorim

21/07/2004

[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é+


GOSTEI 0
POSTAR