Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Unire più file in uno

  1. #1

    Unire + files in uno

    Data una seguente form con questi controlli.
    Elemento (Nome Assegnato)
    OpenFileDialog (OpenFileDialog1)
    SaveFileDialog (SaveFileDialog1)
    Label (LabelStatus)
    Button (btn_add)
    Button (btn_create)
    ListBox (ListBox1)
    ProgressBar1 (ProgressBar1)



    In pratica voglio che aggiunga tutti i file tramite l'openfiledialog (richiamato dal pulsante Aggiung File) nella ListBox (la path dei file in pratica) e voglio che tramite il savefiledialog (richiamato dal pulsante Crea File) unisca tutti i file selezionati in un unico file.

    E che nel processo la ProgressBar1 avanzi (nn l'ho mai usato in vita mia questo controllo ) e che la la Label.Text si personalizzi durante il processo con testi :Fusione File in un unico File, Analisi File e alla fine del processo metta File Creato e alla fine del processo vorrei una MsgBox che dica "File Creato con Successo".

    Da DOS mi rompo

    Thanks

    Postatemi il codice necessario per tutto ciò

  2. #2
    Utente di HTML.it L'avatar di EngLab
    Registrato dal
    Jan 2006
    Messaggi
    496
    L'openfiledialog non l'ho mai usata.. dovresti prima aprire tutti i file ke hai caricato nella lista con l'opendialog e poi leggere tutte le loro righe... finito ciò, devi aprire il nuovo txt e scrivere tutte le righe ke hai letto (ti conviene memorizzarle in array).
    Per l'uso della progressbar non so come aiutarti, ma credo che dovresti "dividere" con una proprietà la progress bar e poi farla aumentare di un'unità alla volta...ma ho le idee un po' confuse... bazzica un po' su msdn.com e cerca...

  3. #3
    Allora: devi prima settare alcune proprietà dell'openfiledialog:
    [list=1][*]Filter = "Nome del tipo di file|*.estensione" (ad esempio, se devi caricare file di testo .txt Filter sarà "File di testo|*.txt", se desideri caricare file di testo e file ini, sarà "File di testo|+.txt|Impostazioni di configurazione|*.ini", se desideri caricare qualunque file sarà "Tutti i files|*.*"): filter indica il tipo di file visualizzati nella finestra di dialogo;[*]Multiselect = true (per far scegliere più file)[/list=1]
    Per mostrare l'openfiledialog usi la funzione OpenFileDialog.ShowDialog() che restituisce un enumeratore di tipo Windows.Forms.DialogResult. Per aggiungre i file alla lista fai così:
    codice:
    If openfiledialog.ShowDialog = Windows.Forms.DialogResult.OK Then
      Dim S() As String = openfiledialog.FileNames 'un array che contiene i nomi dei file scelti
      Dim File As String
      For Each File In S
        ListBox1.Items.Add(File)
      Next
    End If
    e nella lista avrai il nome completo (directory incluse) dei file scelti.

    ora devo andare a mangiare, quando torno ti posto il resto.

  4. #4
    Eccomi tornato... allora a questo punto hai tutti i nomi dei file da unire nella listbox. Ora viene lòa parte in cui devi salvare tutti i file in uno: nell'evento click del pulsante btn_create devi mettere il codice che visualizza il savefiledialog (che è lo stesso dell'openfiledialog), dopo aver settato la proprietà Filter adeguatamente:
    codice:
    If savefiledialog.ShowDialog = Windows.Forms.DialogResult.OK Then
      Dim W As New IO.StreamWriter(savefiledialog.FileName)
      Dim R As IO.StreamReader
      Dim File As String
    
      'il valore massimo della proprietà value della progressbar
      ProgressBar1.Maximum = ListBox1.Items.Count 
      'il valore iniziali della progressbar
      ProgressBar1.Value = 0
      LabelStatus.Text = "Unione dei file in corso..."
    
      For i As Int16 = 0 to ListBox1.Items.Count - 1
        File = ListBox1.Items(i)
        R = New IO.StreamReader(File)
        W.WriteLine("<" + File + ">")
        W.WriteLine(R.ReadToEnd)
        R.Close
        R = Nothing
        ProgressBar1.Value += 1
      Next
    
      MsgBox("File creato!",MessageBoxStyle.Information)
      LabelStatus.Text = "File creato con successo"
      ProgressBar1.Value = 0
    Ecco fatto...

  5. #5
    Rubo per un momento il mestiere di alka, poiché vedo che è una tua abitudine ricorrente fare questo genere di richieste:
    il forum non è un luogo dove mostri una figurina con l'immagine dell'applicazione, una breve descrizione di quello che deve fare e poi scrivi: "bene, realizzatemi questa roba". Si può aiutare a risolvere determinati problemi, ma qui si tratta di scrivere intere applicazioni, per quanto piccole. In più in questa maniera ti perdi tutto il gusto della programmazione: a questo punto cerca con google "merge files" e vedrai che salteranno fuori un milione di utility di questo genere.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    guarda che io ho cercato "merge files" ma usava il process.start (system.diagnostics) (che avviava il comando DOS) ma il fatto è che avevo difficoltà a farlo usando il process.start

    e ho anche usato la funzione "cerca" del forum oltre a Google.

  7. #7
    Il tuo codice era un pò sbagliato, ho risolto tutto tranne
    codice:
     Dim W As New IO.StreamWriter(SaveFileDialog.FileName)
    Mi dà quest'errore
    Overload resolution failed because no accessible 'New' can be called with these arguments:
    'Public Sub New(path As String)': Reference to a non-shared member requires an object reference.
    'Public Sub New(stream As System.IO.Stream)': Reference to a non-shared member requires an object reference.
    Pensavo che aggiungere
    codice:
    Imports System.IO
    risolvesse na nn è così

  8. #8
    ho risolto.

    grazie a tutti

  9. #9
    mi appare un'altro errore

    ma qua penso sia perchè il path è vuoto.
    Infatti quando va aggiungere il path lo aggiunge nella 2° riga.

    Ecco la descrizione dell'errore

    [img=http://img46.imageshack.us/img46/5184/13vi2.th.jpg]

    Volevo una conferma se è un problema della path del file.

    Update:si era un problema di path che ho risolto.

    Ma c'e' un altro problema il file che mi crea occupa 0 Kb

    Dov'e' il problema adesso?!
    Cosa pensate sia?

  10. #10
    ho risolto definitivamente

    scusate se ho rotto il ca**o

    flash

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.