1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[VB6] Salvar e Salvar como

Discussão em 'Programação' iniciada por eXcept, 28 de Setembro de 2006. (Respostas: 7; Visualizações: 3443)

  1. eXcept

    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?
     
  2. souto

    souto To fold or to FOLD?

    não estou dentro de VB mas penso que isso com umas flags vai lá (variáveis de controlo).

    cumprimentos.
     
  3. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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
     
  4. eXcept

    eXcept Power Member

    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
     
  5. spastikman

    spastikman Banido

    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]
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

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

    eXcept Power Member

    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.
     
  8. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Ah... isso é um controlo ActiveX, o que eu utilizava =X pensava que havia um API específica para isso ^^
     

Partilhar esta Página