�Se pueden escribir un c�digo en
Basic para copiar archivos de cualquier tipo?. Pues s�, aqu�
les presento un ejemplo completo y funcional. �Porqu� quisiera
escribir c�digo para copiar archivos si ya existe FileCopy?. Les
enumero unas buenas razones.
|
Como estas, deben existir m�s razones. Para implementar cualquiera de estos temas debe personalizar el c�digo, �selo como gu�a simplemente. El origen de este procedimiento fue la creacci�n de un programa de instalaci�n personalizado (esto implementa un c�digo m�s extenso dentro del procedimiento).
Comentarios
|
El c�digo se muestra a continuaci�n:
'---------------------------------------------------------------------
'Copia un archivo.
'Sintaxis
'FileCopy fuente, destino [, sobre escritura]
'Argumentos:
'SourceFile: nombre completo de un archivo a copiarse
'DestinationPath: nombre de la ruta de destino
'OverWrite: Opci�n de especificar sobre escritura.
'Por Harvey Triana, Petrosoft Co., 1996
'---------------------------------------------------------------------
Sub PetrosoftCopyFile(SourceFile As String, DestinationPath As String, Optional OverWrite As Variant)
Const INLINE = 2 ^ 10
Dim Tem As String
Dim i As Integer
Dim RCnl As Integer
Dim WCnl As Integer
Dim Bytes As Long
Dim Groups As Long
Dim SBytes As Long
'Este bloque verifica la sobre escritura si al archivo exise
Tem = DestinationPath + FileNameFromPath(SourceFile)
If Len(Dir(Tem)) Then
If IsMissing(OverWrite) Then
Kill Tem
Else
If OverWrite Then
Kill Tem
Else
Exit Sub
End If
End If
End If
RCnl = FreeFile
Open SourceFile For Binary Access Read As #RCnl
WCnl = FreeFile
Open Tem For Binary Access Write As #WCnl
'Copia por grupos de bytes
Bytes = LOF(RCnl)
Groups = Int((Bytes / INLINE))
SBytes = (Bytes - Groups * INLINE)
If Groups > 0 Then
For i = 1 To Groups
Tem = Input$(INLINE, #RCnl)
Put #WCnl, , Tem
Next
End If
If SBytes > 0 Then
Tem = Input$(SBytes, #RCnl)
Put #WCnl, , Tem
End If
Close RCnl, WCnl
End Sub
Public Function FileNameFromPath(Tem As String) As String
Dim x As String, i
If InStr(Tem, "\") Then
i = Len(Tem)
Do
x = Mid$(Tem, i, 1)
i = i - 1
Loop Until x = "\" Or i = 0
FileNameFromPath = Mid$(Tem, i + 2)
Else
FileNameFromPath = Tem
End If
End Function
Atentamente,
Harvey Triana [email protected]