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

[VB6] Guardar itens de listbox para ficheiro .cfg

Discussão em 'Programação' iniciada por WinAce_Boy, 26 de Maio de 2007. (Respostas: 14; Visualizações: 3008)

  1. WinAce_Boy

    WinAce_Boy Power Member

    OI, boa tarde,
    Já sei guardar(e ir buscar) dados, variáveis, etc.. em ficheiros, mas não consigo arranjar maneira de gravar para um ficheiro todos os itens(nº indeterminado) de uma lista, e depois quando o programa inicia(Form_Load) ir buscar os dados e preencher automaticamente a lista com os dados..

    Desde já agradecido..
    Abraços a todos..;)
    Obrigado pela atenção.
     
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Boas :)

    Sabes gravar um ficheiro?
    Código:
    Open <ficheiro> For [B]Output[/B] As #1
    Ao abrires um ficheiro para OUTPUT estás a dizer que vais ESCREVER nele.

    - Para apanhares um item da ListBox, usas o List1.List(item).
    - O primeiro item de uma ListBox é o 0 e o último é o List1.ListCount - 1
    - Um ciclo entre o primeiro item e o último resolve o teu problema :P

    Para escrever no ficheiro aberto,
    Código:
    Print #1, texto
    onde texto é uma variável do tipo String :)

    Acho que já disse tudo o que precisas :)
     
  3. WinAce_Boy

    WinAce_Boy Power Member

    pois..lol, o meu problema está em fazer o ciclo..
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    :wvsore: Mas eu acho que tu tens o conhecimento necessário para fazer isso sozinho...
    Código:
    Open ficheiro For Output As #1
       For i = 0 to List1.ListCount - 1
          Print #1, List1.List(i)
       Next i
    Close #1
    
    É mesmo muito simples :x
     
  5. WinAce_Boy

    WinAce_Boy Power Member

    não tinha conhecimento dessa função..
    para k serve o Next i?
    o i é o nome de uma variavel certo?(k poderia ser outro kalker)
    obrigadao
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Afinal o teu problema era não saberes usar o ciclo For.
    O ciclo inicia-se na linha
    For <variável (que naquele caso era o i, como disseste)> = Inicio To Fim
    <tudo o que está aqui dentro é repetido>
    Next <variável>

    O ciclo começa na linha do FOR e termina na linha do NEXT. Enquanto não tiver sido atingido o valor máximo para a variável, o que está entre o FOR e o NEXT vai ser repetido.

    Para teres uma ideia,
    Código:
    For i = 1 To 10
         Msgbox i
         Msgbox i * 2
    Next i
     
    Msgbox "11"
    
    Verás que as duas MSGBOXes que estão no interior do ciclo FOR...NEXT serão repetidas dez vezes (a primeira mostra o número actual, e a segunda mostra o dobro do número actual), mas a que está fora do ciclo (após a linha do NEXT) já não será repetida.
    O i é uma variável que uso muitas vezes em ciclos FOR pelo hábito. Podia ser uma variável qualquer, desde que fosse numérica (Integer, Long, Double...) e não Alfanumérica (String). :)
     
  7. HecKel

    HecKel The WORM

    De forma a complementar a excelente explicação do angelofwisdom, podes especificar um passo de iteracção no for, por exemplo, andar de 3 em 3 valores.

    Código:
    For i = 10 to 5 step -1
    
    blablabla
    
    Next i
    Omitindo o step (exemplo do angelofwisdom) o compilador assume que o passo é UM.

    Espero não te ter baralhado :P

    abraços, HecKel
     
  8. WinAce_Boy

    WinAce_Boy Power Member

    Boas,
    Desculpem a minha longa ausencia e tempo que demorei a responder..

    Ok, ja percebi a sintaxe desse ciclo e ja consigo trabalhar com ele xD.
    Mas nao consigo arranjar maneira de por um prog a ler dados para uma listbox =[]=

    Abracos.. |^^|
    Obrigado pela atencao.. xD
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Mais duas semanas e podia-te dizer que demoraste meio ano a responder :D

    Para pôres o programa a ler os dados para a listbox,
    Código:
    Open "Ficheiro" for [B]Input[/B] As #1
       Do Until EOF(1)
          Line Input #1, buffer
          List1.Additem buffer
       Loop
    Close #1
    
    Não está testado, mas isto assim deve dar. Basicamente, abres o ficheiro para leitura (Input), fazes um ciclo que termina quando o fim do ficheiro for atingido (EOF(id_do_ficheiro) = True), vais buscar cada linha com o Line Input, essa linha vai para a variável buffer, e essa variável entra na listbox na linha seguinte (List1.Additem buffer).

    Está suficientemente explícito? :P
     
  10. WinAce_Boy

    WinAce_Boy Power Member

    ya, simples e eficiente lol, tens mesmo jeito, devias publicar um livro ou manual sobre vb xD
     
  11. WinAce_Boy

    WinAce_Boy Power Member

    Mas porque nao usaste o ciclo for?
     
  12. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Num ciclo FOR defines o início e o fim. Ora, não tens forma de escolher qual das linhas queres ir buscar, nem sabes quantas linhas tem o ficheiro, usas um ciclo Do...Loop que só termina quando o fim do ficheiro for atingido.
    Cada vez que chamas o Line Input ele devolve-te a linha seguinte. Quando ainda há linhas, EOF(ficheiro) é False. Quando já foste buscar a última linha, nesse momento EOF(ficheiro) será True.
    O "Do Until EOF(1)" quer dizer que vai percorrer o ciclo tantas vezes quantas forem precisas até ser atingido o fim do ficheiro. Aí, sai do ciclo.
    Quando tentares fazer um Line Input mesmo quando EOF(ficheiro)=True, recebes um erro porque estás a ir buscar uma linha, apesar de já não haverem mais linhas. Acho que é o erro "Input Past End Of File" (e faz sentido que seja :) ).
     
  13. WinAce_Boy

    WinAce_Boy Power Member

    Hmm..ok, comecei à pouco a entrar nos ciclos(eu sei que é básico mas nunca precisei deles, é por isso que só estou a aprender agora)
     
  14. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Nunca precisaste de ciclos? O que é que tens feito até agora? :P Ciclos são fundamentais na programação ;)

    No fundo, para distinguires que ciclos queres usar, tens de saber se tens ou não um fim.
    Se tiveres início e fim definidos, usas um For...Next.
    Se não tiveres, usas um Do...Loop.
    Se o ciclo corre ENQUANTO uma expressão é verdadeira, usas o While...Wend (ou o Do While ... Loop).
    Se o ciclo corre ATÉ uma expressão ser verdadeira, usas o Do Until... Loop.
    Para um ciclo virtualmente infinito, usas um simples Do...Loop.

    É bastante simples :) o HecKel tem um tópico que explicava as bases fundamentais da programação. Procura por aí ;)
     
  15. WinAce_Boy

    WinAce_Boy Power Member

    Ok, bigadao isso vai ser útil xD
     

Partilhar esta Página