Newsgroup: it.comp.lang.visual-basic
Titolo: Chi aiuta un neo programmatore? Urgente!!!!

Ciao a tutti
avrei bisogno di un urgente consiglio. Sto terminando il mio primo programma
ma non so come fare una cosa.
Sto creando un programma per splittare i files ho trovato in giro per
internet il codice necessario per eseguire lo split di un file e l'ho
modificato come meglio mi occorreva. Ora però non riesco ad imporre al
programma di SALVARE IL FILE SPLITTATO in un cartella selezionata
precedentemente.
Ad esempio, se il file da splittare selezionato nella TEXT1 è File.abc e la
cartella selezionata nella TEXT" è c:\aaa io voglio che il file sia
convertito e "spedito" nella cartella preselezionata, che cosa devo inserire
qui sotto o nel programma?
Non so come ringraziarvi per l'attenzione,...bhe, forse inviandovi una copia
gratuita del mio programma
Grazie
Giuliano
Function SplitFile(Filename As String, Filesize As Long) As Boolean
    On Error GoTo handelsplit
    Dim lSizeOfFile As Long, iCountFiles As Integer
    Dim iNumberOfFiles As Integer, lSizeOfCurrentFile As Long
    Dim sBuffer As String '10Kb buffer
    Dim sRemainBuffer As String, lEndPart As Long
    Dim lSizeToSplit As Long, sHeader As String * 16
    Dim iFileCounter As Integer, sNewFilename As String
    Dim lWhereInFileCounter As Long
    If MsgBox("Splitto il file?", vbQuestion + vbYesNo, "Split?") = vbNo
Then
        SplitFile = False
        Exit Function
    End If
    Open Filename For Binary As #1
    lSizeOfFile = LOF(1)
    lSizeToSplit = Filesize * 1024
    'Verifica il rapporto tra il file e la grandezza da splittare
    If lSizeOfFile <= lSizeToSplit Then
        Close #1
        SplitFile = False
        MsgBox "Questo file è più piccolo della grandezza scelta. Non è
possibile splittarlo.", vbExclamation, "Grandezza file errata"
        Exit Function
    End If
    'Verifica se non è già stato splittato
    sHeader = Input(16, #1)
    Close #1
    If Mid$(sHeader, 1, 7) = "SPLITIT" Then
        MsgBox "Attenzione: il file è già stato splittato!"
        SplitFile = False
        Exit Function
    End If
    Open Filename For Binary As #1
    lSizeOfFile = LOF(1)
    lSizeToSplit = Filesize * 1024
    'Scrive l'intestazione del file
    ' Signature = "SPLITIT" = Size 7
    ' Split Number= "xxx"= Size 3
    ' Total Number of Split Files = "xxx"= Size 3
    ' Origanal file extension= "aaa"= Size 3
    'Total of 16 for header
    iCountFiles = 0
    iNumberOfFiles = (lSizeOfFile \ lSizeToSplit) + 1
    sHeader = "SPLITIT" & Format$(iFileCounter, "000") &
Format$(iNumberOfFiles, "000") & Right$(Filename, 3)
    sNewFilename = Left$(Filename, Len(Filename) - 3) &
Format$(iFileCounter, "000")
    Open sNewFilename For Binary As #2
    Put #2, , sHeader 'Intestazione
    lSizeOfCurrentFile = Len(sHeader)
    While Not EOF(1)
        Me.Caption = "Splitta file : " & iFileCounter & " (" &
Int(lSizeOfCurrentFile / 1024) & " Kb)"
        Me.Refresh
        sBuffer = Input(10240, #1)
        lSizeOfCurrentFile = lSizeOfCurrentFile + Len(sBuffer)
        If lSizeOfCurrentFile > lSizeToSplit Then
            'Scrive l'ultimo bit
            lEndPart = Len(sBuffer) - (lSizeOfCurrentFile - lSizeToSplit) +
Len(sHeader)
            Put #2, , Mid$(sBuffer, 1, lEndPart)
            Close #2
            'Crea il nuovo file
            iFileCounter = iFileCounter + 1
            sHeader = "SPLITIT" & Format$(iFileCounter, "000") &
Format$(iNumberOfFiles, "000") & Right$(Filename, 3)
            sNewFilename = Left$(Filename, Len(Filename) - 3) &
Format$(iFileCounter, "000")
            Open sNewFilename For Binary As #2
            Put #2, , sHeader 'Intestazione
            'Scrive il buffer restante
            Put #2, , Mid$(sBuffer, lEndPart + 1)
            lSizeOfCurrentFile = Len(sHeader) + (Len(sBuffer) - lEndPart)
        Else
            Put #2, , sBuffer
        End If
    Wend
    Me.Caption = "Terminato"
    Close #2
    Close #1
    SplitFile = True
    Exit Function
handelsplit:
    SplitFile = False
    MsgBox Err.Description, vbExclamation, "Errore #" & Err.Number
    Exit Function
End Function

Giuliano
Non ho quasi capito un'H di quello che ti sei inventato e forse non ho
capito bene la domanda... ma se l'ho capita basta che nella open davanti al
nome del file metti la path di dove memorizzarlo.
Anche perche' se ho capito quello che dovevi fare con la tua split (ma non
credo !)  ma ammesso che abbia capito.... penso che quello che ti serviva
erano una manciata di istruzioni (non + di 10 forse).
Dim PathName as string
PathName = "C:\NEW\"
open PathName & sNewFilename For binary As #2
ecc. ecc. ecc.
Bho !!!!!!
Ciao
Ven.

            Open sNewFilename For Binary As #2
Sostituisci con:
	If Right(NewPath, 1) ="\" Then
		NewPath = Left(NewPath, Len(NewPath) -)
	End If
            Open NewPath & "\" &  NewFilename For Binary As #2
Se la directory di destinazione la ottieni con una common Dialog, allora, se essa è la root di un disco (es c:\) i viene
ritornata la barra ("\") alla fine e ti sconvolge tutto....: l'If evita questo....
Quindi ora, come secondo parametro della funzione devi passare la dir di destinazione.
Non l'ho provata, ma dovrebbe funzionare.....
Ciao,
Moreno
#sirri#@
morenosoft.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
Home Page - 
http://www.geocities.com/SiliconValley/Bridge/1414/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------