Shinhatsubai Postado Junho 8, 2011 Denunciar Share Postado Junho 8, 2011 Bom dia!Estou com um exercício de concatenação com passagem de parâmetros por referência mas não sei onde estou errando!Procurei na internet mas não encontrei nenhum exemplo que me ajudasse! Alguém pode analisar o código e me dar uma luz?Obrigado!unit Argumentos_por_EnderecoP; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; procedure Concatenar(Var nome, sobrenome: String); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Concatenar; begin nome := Form1.Edit1.Text; sobrenome := Form1.Edit2.Text; Edit3.Text := nome + ' ' + sobrenome; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; Edit1.SetFocus; end; procedure TForm1.Button3Click(Sender: TObject); begin Application.Terminate; end; procedure TForm1.Button1Click(Sender: TObject); begin Concatenar; end; end Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jaumDoDelphi Postado Junho 8, 2011 Denunciar Share Postado Junho 8, 2011 ola amigo!primeiro você esqueceu de declarar as variaveisnome e sobrenome, um exemplo ficaria assim:procedure TForm1.Concatenar; var nome, sobrenome : string; begin nome := Form1.Edit1.Text; sobrenome := Form1.Edit2.Text; Edit3.Text := nome + ' ' + sobrenome; end;boa sorte e um abrço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Shinhatsubai Postado Junho 8, 2011 Autor Denunciar Share Postado Junho 8, 2011 ola amigo!primeiro você esqueceu de declarar as variaveisnome e sobrenome, um exemplo ficaria assim:procedure TForm1.Concatenar; var nome, sobrenome : string; begin nome := Form1.Edit1.Text; sobrenome := Form1.Edit2.Text; Edit3.Text := nome + ' ' + sobrenome; end;boa sorte e um abrço!Muito obrigado Jaum!Mas se eu declarando-as dessa forma o Delphi me dá a mensagem de que eu estou redeclarando as variáveis.E dessa forma o parâmetro não deixaria de ser por referência? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jaumDoDelphi Postado Junho 8, 2011 Denunciar Share Postado Junho 8, 2011 opa Shinhatsubai no exemplo que t passei, é para uma declaração local.se você quer utilizalas como global declare elas antes do "implementation" tb se você quizer utilizalas como universaldai no proximo form você as declara como:var {variaveis globais neste unit} frV2: TfrV2; mCROSS, exeDIR, dOri, dDest, urlS, ifv, bmpw, bmph : String; url : widestring; ibtn, iLoc : integer; mdt : double; implementation {pegas todas as variaveis globais dos unitis abaixo tornando as universais} uses xMKimdb_DM, grid_form, xMKimdb_studio, xMKimdb_status, xMKimdb_editor, xmkIMDB_list, xMKimdb_web;ate mais abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Shinhatsubai Postado Junho 8, 2011 Autor Denunciar Share Postado Junho 8, 2011 Obrigado pela força Jaum!Estou começando a aprender o Delphi, nesse caso, acho que a intenção não é declara-las como global, mas passar os valores por referência.O meu professor pediu que concatenassemos as variáveis nome e sobrenome, sendo passador por referência para a formação do nomecompleto.O código que postei acima está muito fora de conseguir esse objetivo?Onde estou errando?Mais uma vez agradeço pela ajuda! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Junho 8, 2011 Denunciar Share Postado Junho 8, 2011 (editado) Olá Shinhatsubai,pra esse caso seria mas apropriado fazer uma function ao invés de procedure.Exemplo:unit Argumentos_por_EnderecoP; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; function Concatenar(nome, sobrenome: string) : string; procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function TForm1.Concatenar(nome, sobrenome: string) : string; begin Result := nome + ' ' + sobrenome; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; Edit1.SetFocus; end; procedure TForm1.Button3Click(Sender: TObject); begin Application.Terminate; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit3.Text := Concatenar(Edit1.Text,Edit2.Text); end; end.Abs. Progr'amador Editado Junho 8, 2011 por Progr'amador Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Shinhatsubai Postado Junho 8, 2011 Autor Denunciar Share Postado Junho 8, 2011 Muito obrigado pela força jaumDoDelphi e Progr'amador !!!@Progr'amador: Deu certinho o código Progr'amador, obrigado.você diz que é mais apropriado utilizar uma function ao invés de procedure, o código com function funcionou perfeitamente, mas é possível fazer esse programinha funcionar com procedure? No código que você passou, tentei trocar o function por procedure e não deu certo.A questáo é que neste exercício meu professor pediu fizessemos esse programinha usando procedure.. ainda não aprendemos functions...Mais uma vez obrigado !!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Junho 8, 2011 Denunciar Share Postado Junho 8, 2011 (editado) é possivel sim:unit Argumentos_por_EnderecoP; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; procedure Concatenar(nome, sobrenome: string); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Concatenar(nome, sobrenome: string); begin Edit3.Text := nome + ' ' + sobrenome; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; Edit1.SetFocus; end; procedure TForm1.Button3Click(Sender: TObject); begin Application.Terminate; end; procedure TForm1.Button1Click(Sender: TObject); begin Concatenar(Edit1.Text,Edit2.Text); end; end.PS: Faça você mesmo uma analise e procure entender a difrença entre as duas.Abs. Progr'amador Editado Junho 8, 2011 por Progr'amador Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Shinhatsubai Postado Junho 8, 2011 Autor Denunciar Share Postado Junho 8, 2011 Perfeito!!! Funcionou direitinho!Agora vou dar uma bela estudada nos dois códigos, que hoje provavelmente terei prova sobre o assunto.Muito obrigado!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Shinhatsubai
Bom dia!
Estou com um exercício de concatenação com passagem de parâmetros por referência mas não sei onde estou errando!
Procurei na internet mas não encontrei nenhum exemplo que me ajudasse! Alguém pode analisar o código e me dar uma luz?
Obrigado!
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.