bueno de nuevo yo con mis preguntas :p
bueno la pregunta es como puedo con el vb crear o modificar el tamaño de un archivo pero no el original, si no fingir de cierta forma el tamaño del mismo. Digamos hacer que un archivo de 10Mb aparente pesar 500Mb.
bueno si es esto posible me gustaria que alguien me dijera como o alguna pista ya que no logro encontrar nada sobre el tema con mi amigo google :S
SI se puede
Shell cmd.exe fsutil file createnew "C:\archivo2GB.dat" 2147483648
Eso ejecutara al CMD y hara un archivo vacio que pesa 2 GB!!
Saludos
Cita de: Fitoschido en 22 Julio 2010, 05:18 AM
Shell cmd.exe fsutil file createnew "C:\archivo2GB.dat" 2147483648
No seria asi?
Shell "cmd.exe fsutil file createnew ""C:\archivo2GB.dat"" 2147483648"
:P
error es asi
On Error Resume Next
Dim Res As Long
Res = Shell("cmd.exe /c fsutil file createnew ""C:\archivo2GB.dat"" 2147483648", vbHide)
If Res Then
Call MsgBox("Todo Correcto")
Else
Call MsgBox("Error en Comando")
End If
Le he metido un poco de mi ser!¡.
Sangriento Infierno Lunar!¡.
Cierto, gracias por la ayuda Raul y blackZeroX, lo que pasa es que andaba escribiendo con prisa y se me olvida la sintaxis :P, y me da flojera abrir el VB :xD
aca tenes el equivalente con api's, SetFilePointer...
Option Explicit
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32" (ByVal hFile As Long) As Long
Private Const FILE_BEGIN = 0
Private Const CREATE_NEW = 1
Private Const INVALID_HANDLE_VALUE = -1
Private Const GENERIC_WRITE = &H40000000
Public Sub SetFileSize(ByVal FileName As String, ByVal newSize As Long)
Dim fileHandle As Long
fileHandle = CreateFile(FileName, GENERIC_WRITE, 0&, ByVal 0&, CREATE_NEW, 0&, 0&)
If fileHandle = INVALID_HANDLE_VALUE Then
Err.Raise 53
End If
If SetFilePointer(fileHandle, newSize, 0&, FILE_BEGIN) = -1 Then
CloseHandle fileHandle
Err.Raise 5
End If
If SetEndOfFile(fileHandle) = 0 Then
CloseHandle fileHandle
Err.Raise 5
End If
CloseHandle fileHandle
End Sub
Private Sub Form_Load()
Call SetFileSize("c:\archivo.dat", &HEAC1361F)
End Sub
cuidado que crea un archivo de 3 gigas.. :xD
saludos.
gracias a todos
pero y si yo en vez de querer crear un nuevo archivo, quiero editar uno existente?
Seria con las APIS casi como lo qué publico aquí Seba123Neo solo qué en lugar de usar el parámetro Create_New seria con OPEN_EXISTING, esto t lo digo al vuelo sin probar aun nada.
Pues si lo que quieres es que el programa siga funcionando y pese mas tendras que utilizar Append y le añades todo el peso que quieras y el programa seguira funcionando igual...
salu2!
Public Function sAddKBytes(sPath As String, lKb As Integer)
'Autor: Slek
'Objetivo: Añadir Bytes a un Archivo
'Nota, se añaden KiloBytes
'Ej: sAddBytes "C:\Test.exe", 2 '(Añade 2 KiloBytes)
Dim sKbyte As String
Dim i As Integer
Dim FF
FF = FreeFile
sKbyte = String(1024, vbNullChar)
Open sPath For Binary As #FF
For i = 1 To lKb
Put #FF, LOF(FF) + 1, sKbyte
Next i
Close #FF
End Function
esa es una forma... hay bastantes para hacerlo :laugh: