Fórum Evitar Gravar em arquivo txt loop infinito #297491
28/09/2005
0
A Estrutura esta mais ou menos assim :
While <condicao > do Gravar No Arquivo Texto
queria me proteger , caso ocorrra um loop infinito , esse arquivo txt nada sofresse..
Obrigado...
Marco Salles
Curtir tópico
+ 0Posts
28/09/2005
Massuda
Acho que qualquer medida eficiente para evitar loop infinito neste caso irá depender de como funciona o programa. Poderia sugerir usar um contador, um temporizador, etc mas isso depende de o que está sendo escrito e em que condições o programa fica em loop. Moral da estória: seria melhor você detalhar mais o problema.
Gostei + 0
28/09/2005
Motta
queria me proteger , caso ocorrra um loop infinito , esse arquivo txt nada sofresse..
...
Não entendi , a defesa está em não deixar entrar em loop.
Faça uma checagem das condições antes de entrar.
Um aplicação só entra em loop infinito se vc errar o código , ou fixer de propósito ...
Loop´s infinitos , ainda mais com gravação de arquivos acabam num erro de stack overflow.
Gostei + 0
28/09/2005
Marioguedes
var linha : Integer; begin (...) linha := 0; while (condicao) do begin Gravar.... if linha = 1000 then Break //Aqui está a dica em si else Inc(linha); end; (...) end;
Gostei + 0
28/09/2005
Marco Salles
Mas como disse antes o programa não é meu...
:cry: :cry: :cry:
Existem muitas situaçoes que a gente protege um Bloco com try except finally... :idea: :idea: Pensei que poderia existir algo que ao perceber o loop Infinito , evitasse que o processo de gravação
Aproveitandando esta linha de raciocineo , tem como retornar o arquivo , no estado inicial , Depois que esse erro fora capturado pelo bolco try excepet..
Este código , parece que , evitaria o Loop infinito , mas em compensação , mil coisas seriam gravadas desnecessárias ou repetidas no arquivo Txt
Obrigado a todos e no aguardo de mais sugestoes.
Gostei + 0
28/09/2005
Massuda
Como disse antes, precisaria de mais informação... no mínimo, qual a condição do loop.
Gostei + 0
29/09/2005
Michelli88
Se entrar no loop vc pega o arquivo backup e substitui o outro para q fique como antes. :oops:
Gostei + 0
29/09/2005
Macario
Conforme dito, poste a estrutura do while, pois ficaria mais facil de entender.
Agora o que voce poderia estar fazendo é, mandar os dados para uma StringList e depois caso o while tenha sucesso, voce gravaria a StringList;
Essa é minha sugestão.
:roll:
Gostei + 0
29/09/2005
Marco Salles
[b:ab4a64d4ce]A Questão aqui é um pouco teorica... [/b:ab4a64d4ce]
citacao de Mota
Vamos supor que se ebtre no loop de forma proposital ...
A Pergunta é :
[b:ab4a64d4ce]A Alguma forma de sair desse loop infinito , restaurar o arquivo Original[/b:ab4a64d4ce]
Queria saber se tem jeito via programaçao fazer o que a michelli sugeriu:
Gostei + 0
30/09/2005
Marco Salles
:cry: :cry: :cry: :cry:
Gostei + 0
30/09/2005
Siam
Quando vc faz: While 1 = 1 do ;
O Delphi compila, entra em looping infinito e não dá nenhuma mensagem.
Gostei + 0
01/10/2005
Marco Salles
Certeza disso :!: :!: :!:
Gostei + 0
01/10/2005
Beppe
[quote:2a16086ead=´Marco Salles´]Existem muitas situaçoes que a gente protege um Bloco com try except finally... :idea: :idea: Pensei que poderia existir algo que ao perceber o loop Infinito[/quote:2a16086ead]
Loop infinito é apenas um jargão, técnicamente são apenas um pulo para o mesmo lugar, e o delphi não monitora a execução do programa.
[quote:2a16086ead=´Marco Salles´]evitasse que o processo de gravação[/quote:2a16086ead]
A sugestão da michelli88 é a que mais se aproxima de processamento de transações no sistema de arquivos.
[quote:2a16086ead=´Marco Salles´]
[quote:2a16086ead=´Marco Salles´]Sera que não da para fazer este Tratamento ???? O Delphi não gera nenhuma mensagem interna , para que possamos trata-la ????[/quote:2a16086ead]
É erro de lógica, então o Delphi não dá bola. Faça o loop finito. Se sua pergunta é sair do loop, a resposta é Break.
Gostei + 0
01/10/2005
Marco Salles
Entendido.. Mas suponha que em cada while , o arquivo txt seje carregado... Ira chegar uma hora que ele não suporta mais a inclusão de dados.. Não existe , nenhuma mensagem do windows ou do delphi que se possa tratar neste caso , para ai sim , fazer o que a michelli sugeriu
Citação de beppe
Porque eu nun to entendendo... Como eu vou dar um Break ???
Ou colocando um parametro , como foi comentado sugerido pelo amigo marioguedes , mas ai nesse caso incorre na sugestão do massuda
citacao de massuda
Eu gostaria de dar um Break , na situção de um erro ... Se não dar para definir , um loop infinito , sera que daria para pelo menos defiir um Arquivo Txt com capacidade esgotada < Digamos assim > e neste caso gerar um Erro :?: :?: :?:
Gostei + 0
01/10/2005
Beppe
Até que o HD esgotar? :shock:
Gostei + 0
01/10/2005
Marco Salles
Se não me engano , o txt , tem capacidade limitada . Bem menor do que o Hd
Gostei + 0