Ir para conteúdo
Fórum Script Brasil

kuroi

Membros
  • Total de itens

    7.184
  • Registro em

  • Última visita

Posts postados por kuroi

  1. Se vai imprimir em impressora de fita, acho melhor usar o objeto Printing, como explicado aqui: http://www.macoratti.net/vbn_prn2.htm

    Já o Crystal Reports não é muito "amigável" com o MySql, mas você pode encontrar alguns tutoriais:

    https://www.google.com.br/search?q=mysql+cr...al+reports+.net

    Tem uns guias que encontrei para C# que me ajudaram, mas você pode adaptar para VB.NET.

    https://www.google.com.br/search?q=mysql+cr...al+reports+c%23

  2. Quando chamo meu form ele preenche minha grid que está vinculada ao ADO_Consulta

    Mas o ADO_Consulta é um DataControl?? E está dentro do Form q foi fechado??

    E você associa com o grid e depois fecha o formulário?? Não entendi direito... se você fechar o Form o DataControl deixa de existir, não tem como ele se vincular ao grid.

  3. O que você executa para preencher o DataGrid??

    Uma SP, uma View, um simples Select?? Se você executar este mesmo select e não apontar para o Grid, o erro ocorre mesmo assim??

    Qual o código desse select??

    Esse select estaria tentando acessar um outro banco de dados diferente daquele setado no Initial Catalog, ou algo assim??

  4. Hum... melhor não usar goto. Ele desestrutura todo o código, e se for usado em excesso, o deixará totalmente incompreensível. Além de que, caso isso seja um exercício de escola, é bem provável que seu professor não goste nada de ver goto em seu código.

    Melhor usar alguma estrutura de repetição como o Repeat Until:

    Repeat 
        Writeln('Insira o código do produto...');
        readln(cod);

          If ((cod<1) or (cod>40)) Then
          Begin
               Writeln('Codigo invalido');
          End;
    Until (cod >= 1 And cod <= 40);

    {Aqui continua o código}
          If((cod>=1)and(cod<=10))then
          begin
              pp:=10.00;
          end
    {...}
    {Lembre-se de tirar o End desnecessário que sobrou no final (referente ao If que eu substitui pelo Repeat).}[/code]

  5. Talvez você tenha que controlar manualmente, então.

    Por exemplo, você declara duas variáveis no Generals do Module de códigos da sua planilha e, no Change() da Worksheet, não importa a célula que seja, você compara os valores das células C17 e D17 com as variáveis que declarou. Se o valor mudar, você atualiza as variáveis.

    Ou, você verifica no momento que ele alterar alguma das células que sejam referenciadas pela sua fórmula.

    Mas caso você queira que este método funcione sempre, independente de você alterar a fórmula, aí complica...

  6. Você pode fazer um Replace no KeyPress da TextBox, que troque " " por " " (dois espaços por um espaço só).

    Ou se quiser arrumar uma String já digitada, deve dar com expressões regulares, mas não tenho prática com elas, então não consigo te indicar qual usar.

    Ou você usar um While que cheque a String com InStr(), e vá fazendo o Replace(), enquanto ela tiver espaços duplos. Exemplo:

    Do While InStrB(1, str, "  ") <> 0&
        str = Replace(str, "  ", " ")
    Loop[/code]

  7. Então você jura que se eu deixar o loop "ao infinito" não vai queimar nada na minha máquina?

    Fica tranquilo, se fosse fácil assim queimar alguma peça de hardware, a gente veria computador pegando fogo por aí o tempo todo.

    Bom... se algum programa chegar a travar o sistema operacional, você pode ter problemas com o sistema decorrentes do travamento, né. Apesar de que a gente tá cansado de ver o windows travar e ligar funcionando sem problemas logo depois, nunca se sabe... dependendo da atividade que ele esteja fazendo no momento, algum problema mais sério pode acontecer (geralmente problemas de software, e não de hardware), por isso não vou "jurar" que nenhum problema aconteceria, mas as possibilidades são pequenas.

    Mas no caso do seu código, no modo como está feito, como certeza, não há perigo nenhum. Como você fez usando uma variável int e, como eu disse, o limite da variável int é 2147483647, ao chegar nesse valor e a somar mais 1, você vai "resetar" a variável para o valor -2147483648 e a soma continuará, assim, infinitamente.

    Ou seja, o loop pode estar infinito, mas a contagem não será infinita. Depois de um tempo, ele vai resetar.

    A variável int deve ocupar sempre 4 bytes de memória, não importa o valor que esteja lá dentro.

    Ou seja, pode deixar o seu computador somando pra sempre na variável int que o espaço ocupado pela memória deve ser constante (a não ser quanto espaço ocupado pra exibir graficamente o número na tela. Mas, no windows, por exemplo, a janela do cmd não guarda linhas infinitas. Existe um limite, justamente pra não sobrecarregar a memória).

    Pra que a contagem não resete nunca, você teria que usar, então, alguma daquelas bibliotecas para números infinitos.

    Caso faça isso, aí ele deve continuar somando e ocupando cada vez mais memória. Mas imaginando que seu computador tenha uns 2GB ou 4GB de memória (o que já é até pouco nos dias de hoje), você deve levar muito tempo pra ocupar tudo isso, imagino que seja questão de semanas.

    Bom, acho que o maior transtorno que isso deveria causar seria que, pouco a pouco, o sistema vai ficando cada vez mais lento, chegando ao ponto de que programas não possam mais ser abertos por falta de memória, até acontecer, então, que o seu próprio programa não consiga mais funcionar.

    Nesse momento, acredito, então, que seu programa deve ser fechado pelo SO, o que vai fazer com que toda a memória que você ocupou seja liberada, e possivelmente, o SO continue funcionando.

    Entretanto, não descarto a possibilidade do SO travar, te obrigando a reiniciar o PC. Esse deve ser o maior problema a acontecer.

    Fora isso, sobre seu código, daria para simplificá-lo... Por exemplo, a variável a1 seria desnecessária.

    Pra fazer um loop infinito, é só escrever while(true)

    Hum... acho que eu já devia ter te falado no primeiro post, né?? Acho que era isso que você queria saber desde o começo...

  8. Sim, mas mantendo uma contagem de um em um não seria uma maneira mais sigilosa de atacar um computador que está sempre ligado, do que alocar explicitamente?

    Acho que o único sigilo que poderia existir seria o de tentar esconder que é o seu processo que está tomando a memória, mas não sei dizer se isso é possível.

    No caso, se for com contagem, a única diferença é que a ocupação de memória será feita lentamente, o que pode levar até o seu processo a ser descoberto antes da hora.

    Bom, quero deixar claro aqui que não pretendo programar um código com essa intenção, apenas gostaria de entender a relação.

    Sim, não gosto muito de escrever sobre esses assuntos, pois tem muita gente que procura em tudo oportunidades pra atrapalhar os outros, e pode acabar usando as informações pra fazer besteira.

    Mas de qualquer modo, o ponto principal aqui é que uma biblioteca de números infinitos não é um perigo ameaçador só porque pode atingir o limite de memória. Qualquer programa pode usar a memória até atingir o limite. Um simples array faria todo esse trabalho com uma única linha.

×
×
  • Criar Novo...