[VB6] Salvar e Salvar como

eXcept

Power Member
Viva.

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?
 
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 [[[[[[[]]]]]]
angelofwisdom
 
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.

Código:
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?

tks
 
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.

Código:
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?

tks

http://www.vbexplorer.com/VBExplorer/vb_feature/may2000/may2000.asp

anyway ... uma forma de pedreiro de fazer isso é antes de salvares o ficheiro, removeres com :


kill [path] + [filename]
 
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.

Código:
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?

tks
Teoricamente é fazeres simplesmente o Open para OUTPUT, em vez de Append. Ou, como o spastikman disse, "KILL" antes :P

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 :)

Cumps [[[[[[[[[]]]]]]]]]]
angelofwisdom
 
Back
Topo