Duvida - Explicação
Pessoal, tenho uma duvida sobre o fonte abaixo:
Msg := ´Deseja Calcular a Porcentagem Automaticamente?´;
Msg := Format(Msg, [vlcompra]);
if messagebox(0, PAnsiChar(Msg),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
Eu rodei e está beleza, mas não consegui entender:
[b:5560b42ab6]Porque eu não poderia colocar assim:[/b:5560b42ab6]
if messagebox(´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
[b:5560b42ab6]Nesta linha abaixo, o ´vlcompra´ é uma variavel, pq tem que ter ela para funcionar?[/b:5560b42ab6]
Msg := Format(Msg, [vlcompra]);
[b:5560b42ab6]O que significa:[/b:5560b42ab6]
0, PAnsiChar
Grato,
Ricieri.
Msg := ´Deseja Calcular a Porcentagem Automaticamente?´;
Msg := Format(Msg, [vlcompra]);
if messagebox(0, PAnsiChar(Msg),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
Eu rodei e está beleza, mas não consegui entender:
[b:5560b42ab6]Porque eu não poderia colocar assim:[/b:5560b42ab6]
if messagebox(´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
[b:5560b42ab6]Nesta linha abaixo, o ´vlcompra´ é uma variavel, pq tem que ter ela para funcionar?[/b:5560b42ab6]
Msg := Format(Msg, [vlcompra]);
[b:5560b42ab6]O que significa:[/b:5560b42ab6]
0, PAnsiChar
Grato,
Ricieri.
Ricieri
Curtidas 0
Respostas
Rjun
21/03/2006
[b:b9b8ab9cf2]Porque eu não poderia colocar assim:[/b:b9b8ab9cf2]
if messagebox(´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
O desenvolvedor está usando uma função da API do Windows e não o MessageBox da VCL do Delphi. Acho que a única diferença é que os botões serão exibidos no idioma do Windows, equanto o MessageBox do Delphi será em Inglês.
Nesta linha abaixo, o ´vlcompra´ é uma variavel, pq tem que ter ela para funcionar?
Msg := Format(Msg, [vlcompra]);
Bom, aqui deve estar faltando algo. O FORMAT serviria para substituir um argumento dentro da string. Por exemplo, se você quiser exibir a seguinte mensagem para o usuario:
[b:b9b8ab9cf2] Foram selecionados 10 registros.[/b:b9b8ab9cf2]
Digamos que o 10 não seja um número fixo. Ele pode variar de acordo com o processamento. Em vez de enfiar um IntToStr(Valor) dentro da string, podemos fazer da seguinte maneira:
ShowMessage(Format(´Foram selecionados ¬d registros.´, [valor]));
O que significa:
0, PAnsiChar
O [b:b9b8ab9cf2]0[/b:b9b8ab9cf2] significa o Handle da janela em que a MessageBox será exibida. Se eu estiver errado, por favor, me corrijam. E PAnsiChar server para converter a string em um ponteiro de array de caracteres, que é o tipo do argumento a ser informado.
GOSTEI 0
Thiago Vidal
21/03/2006
na verdade, para funcionar, citando o seu próprio exemplo, faltou apenas informar o Handle:
ou, para pegar o handle da aplicação, vc pode usar direto Application.MessageBox.
PAnsiChar, na verdade, retorna um ponteiro para o 1o caractere de uma string, que é assim que os aplicativos passam strings para as APIs do windows, que também pode ser referenciado, para uma string chamada s, por exemplo, como @s[1].
espero ter ajudado.
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
ou, para pegar o handle da aplicação, vc pode usar direto Application.MessageBox.
PAnsiChar, na verdade, retorna um ponteiro para o 1o caractere de uma string, que é assim que os aplicativos passam strings para as APIs do windows, que também pode ser referenciado, para uma string chamada s, por exemplo, como @s[1].
espero ter ajudado.
GOSTEI 0
Adriano Santos
21/03/2006
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
Tem um parentese a mais depois do apostrofe e da interrogação:
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´,´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
GOSTEI 0
Martins
21/03/2006
[quote:08fcb8062f=´Adriano Santos´]
Tem um parentese a mais depois do apostrofe e da interrogação:
[/quote:08fcb8062f]
Talvez ele queria colocar assim...
ou foi esquecimento na hora de alterar o código.
:wink:
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´),´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
Tem um parentese a mais depois do apostrofe e da interrogação:
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´,´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
Talvez ele queria colocar assim...
if MessageBox(0, Pchar(´Deseja Calcular a Porcentagem Automaticamente?´), ´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
ou foi esquecimento na hora de alterar o código.
Msg := ´Deseja Calcular a Porcentagem Automaticamente?´;
Msg := Format(Msg, [vlcompra]);
if messagebox(0, PAnsiChar(Msg),´Pergunta´,mb_yesno+mb_iconquestion)= 6 then
:wink:
GOSTEI 0
Thiago Vidal
21/03/2006
realmente, o parenteses foi a mais, desculpem...
o correto é:
o correto é:
if MessageBox(0, ´Deseja Calcular a Porcentagem Automaticamente?´, ´Pergunta´, MB_YESNO+MB_ICONQUESTION)= MB_YES then
GOSTEI 0