Conhecimentos indispensáveis - seja Clipper ou Harbour

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Conhecimentos indispensáveis - seja Clipper ou Harbour

Mensagem por Pablo César »

JoséQuintas escreveu:Na função, o conteúde começou em zero, e foi somando um. Mas não foi zerado a cada chamada, a função "lembrou" do valor anterior.
Sim... tem razão. Muito bom isso.
JoséQuintas escreveu:Não é igual PUBLIC, porque SÓ A FUNÇÃO enxerga essa variável.
Nem igual ao LOCAL que sempre zeraria o valor... entendi.

Muito obrigado Mr. Quintas. Pois é justamente isso que vi no exemplo do Krzysztof ao igual do seu que você agora explicou o comportamento.
Pois a simples vista não parecia que teria esse comportamento (de guardar esse valor de dentro das sub-funções). Valeu !

Mr. Quintas você é muito bom nas suas explicações e tem um aguçado sentido nos seus análises...

(it's good to have you in our community)

:{
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Conhecimentos indispensáveis - seja Clipper ou Harbour

Mensagem por rubens »

Bom dia...

Agora ficou bem claro...
É bem interessante sim... principalmente por ser acessada somente na função...

Valeu Quintas...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Conhecimentos indispensáveis - seja Clipper ou Harbour

Mensagem por JoséQuintas »

O mais importante é o seguinte:
Isso poderia ser feito com uma variável PUBLIC, mas todos os seus fontes dependeriam dela.
Não poderia alterar o nome nunca, a variável ficaria presa aos fontes do aplicativo, e os fontes do aplicativo presos ao nome da variável.
Teria que declarar a variável em todos os fontes pra funcionar a compilação -w3 -es2
Significa que se dá trabalho compilar com -w3 -es2, talvez seja o compilador te avisando pra melhorar alguma coisa.

Usando desse jeito, função e variável STATIC, os fontes nem sabem que a variável existe, apenas chamam a função.
Mais fácil de mexer nos fontes.
E se errar o nome, que é a função, a linquedição já vai te avisar, porque vai dizer que a função não existe.

Não parece, mas uma simples definição de variável pode facilitar muito num projeto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Conhecimentos indispensáveis - seja Clipper ou Harbour

Mensagem por Claudio Soto »

Pablo, en este ejemplo cambia la variable static por una pública y vas a ver que funcionan igual, porque mantiene el valor de la última llamada a la funcion, la diferencia es que con static te aseguras que la variable no se le asigne valores fuera de la funcion, en cambio con la public podes cambiar su valor fuera y dentro de la funcion. Esto último es mas peligroso obviamente por el conflictivo en el nombre de variables y por la dificultad en el desarrollo de rutinas generales
En el ej es necesario que sea static porque la variable actúa como flag flipflop, y por lo tanto necesita recordar el último valor que se le asigno, si la cambias por local siempre va a ser .t., en cambio con static se inicia con .t. pero en cada llamado se invierte el valor, es decir fluctúa el valor entre t y f entre cada llamada.

PD: cuando poste esto no vi que ya se había contestado, I'm sorry Pablo.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Conhecimentos indispensáveis - seja Clipper ou Harbour

Mensagem por Pablo César »

Entiendo. Muy bueno está el STATIC.
Pena que lo asimilé ahora de viejo... Imagem
Claudio Soto escreveu:PD: cuando poste esto no vi que ya se había contestado, I'm sorry Pablo.
No hay problemas Claudio. Me vino bien tu comparación. Nunca está demás.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Heero
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 13 Jul 2015 22:10
Localização: Guarulhos/SP

Conhecimentos indispensáveis - seja Clipper ou Harbour

Mensagem por Heero »

Agradecido!! :{ :{
Ricardo Rodrigues
Harbour 3.2 + BCC + Minigui
Cursando Análise e Desenvolvimento de Sistemas
Responder