Passar uma TSTRING como parametro
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;
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
Curtidas 0
Respostas
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
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
21/07/2004
Olá
Pode ter um jeito mais fácil, mas uma saída eh vc colocar o result antes
A partir daí vc não trabalha mais com Texto, mas sim com Result
Espero que ajude
Até+
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
21/07/2004
Esse método não deu....deu erro de violação de acesso...alguma outra sugestão ?
GOSTEI 0
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
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
21/07/2004
Valew....apenas coloquei a tstringlist na função para receber o parametro texto....
GOSTEI 0
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
Asismtambém deve funcionar
Até+
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