[VB6] Salvar e Salvar como | ZWAME Fórum
[VB6] Salvar e Salvar como
Discussão em 'Programação' iniciada por eXcept, 28 de Setembro de 2006. (Respostas: 7; Visualizações: 3524)
Estou a fazer um trabalho no VB6 que me vai permitir guardar ficheiros. A minha dúvida está em como diferenciar o Salvar e o Salvar Como... Ou seja, quando guardar a primeira vez, guardar com o nome escolhido pelo user, e nas vezes seguintes não perguntar o nome. Como é que é feita essa diferenciação? E como é que consigo que o software detecte se foram ou não feitas alterações desde a última gravação?
não estou dentro de VB mas penso que isso com umas flags vai lá (variáveis de controlo).
Que tipo de ficheiros vai guardar?
Provavelmente, uma flag de "Changed" (começa como false) ajuda.
Vou-te dar o exemplo dum bloco de notas:
ficheiro -> novo (Changed = false, Filename = vbNullString )
escreves na textbox o que quer que seja e Changed passa a ser True. Agora, o ficheiro está diferente, e terá (ou não) de ser gravado.
Agora, se tu fizeste um ficheiro novo, a string Filename é vbNullString (isto é, não há nome). Se fizeres Save, ele compara IF FILENAME = vbNullString then... e abre o Save As.
Se ao fazeres Save, existir um nome de ficheiro (Filename = "blabla:\blabla\blabla.txt"), então ele grava automaticamente.
Ao fazeres Open, Changed = False e Filename = <nome do ficheiro que abriste>.
Save... if Changed = True, grava. senão, não faz nada.
Não te sei explicar melhor, mas isto é uma questão de lógica. Tens de saber 1) se o ficheiro foi alterado, e 2) Qual o nome do ficheiro. vbNullString indica que o ficheiro não tem nome, e portanto, um Save vai a Save As...
Espero ter ajudado. Se precisares de uma clarificação, pede
Cumps [[[[[[[]]]]]]
já dá para ter uma noção, tks
já agora uma outra questão. Estou a usar a API cdlg para fazer o Save dos ficheiros.
cdlg.ShowSave
SaveText texto, cdlg.FileName & ".txt"
O que acontece é que, se o ficheiro já existir, ele faz um append ao ficheiro ( conteúdos antigos mais conteúdos novos ) em vez de gravar por cima. Alguem sabe como fazer para ele apagar o ficheiro e voltar a criar?
anyway ... uma forma de pedreiro de fazer isso é antes de salvares o ficheiro, removeres com :
kill [path] + [filename]
Teoricamente é fazeres simplesmente o Open para OUTPUT, em vez de Append. Ou, como o spastikman disse, "KILL" antes
Cuidado como usas o Kill
e um aparte: eu não sabia que o cdlg era uma API =| se puderes mostra-me a declaração
erm...Project -> Components ( ou ctrl+t ) e dps activar o component cdlg.
Ele não me dá mais opções do que as que postei encima.
Ah... isso é um controlo ActiveX, o que eu utilizava =X pensava que havia um API específica para isso ^^