Tengo un archivo con un carácter extraño. Tipo : عربي...
Entonces cuando intento copiarlo a otro lugar, me da error... Nombre de archivo incorrecto... :-(
Alguna solucion? :huh: :huh:
DoEvents! :P
ni idea porque te da el error, pero son caracteres unicode, en teoria si los copias a un campo de texto que no soporta este tipo de caracter, te muestra unos signos de interrogacion ????
por ahi hubo un post donde respondi como generar estos caracteres desde visual basic.
por ejemplo a donde los queres copiar.
el explorador de windows soporta estos caracteres.
El propio proyecto de vb se llama : Holaعربي.exe
Se debe copiar el mismo a "c:\" con el nombre : "Adios.exe"
Voy a buscar ese post... ;)
DoEvents! :P
Pero no entiendo una cosa, si puedes usar lo de app.exename o q dices?
@seba123neo
Supongo que te refierse a esto :
http://foro.elhacker.net/programacion_visual_basic/command_extraer_archivos-t319395.0.html;msg1580388#msg1580388
Nunca antes hice esto, y si soy sincero, no entiendo algunas partes del código... :-(
Pensé algo así, pero no funciona... :xD
Option Explicit
Private Declare Function GetModuleFileNameW Lib "kernel32" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileW" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long, ByVal bFailIfExists As Long) As Long
Function WhereIam() As String
Dim bnUffer As String * 255
GetModuleFileNameW 0, bnUffer, 255
WhereIam = Replace$(bnUffer, vbNullChar, vbNullString)
End Function
Private Sub Form_Load()
CopyFile StrPtr(WhereIam), StrPtr("c:\ByeBye.exe"), 0
End Sub
@XXX-ZERO-XXX
Eso es lo primero que probé... y obvio que no funciona. :¬¬
DoEvents! :P
no, ese no es el post :P
es este:
Caracteres Especiales en TextBox (http://foro.elhacker.net/programacion_visual_basic/caracteres_especiales_en_textbox_ayuda-t300836.0.html)
PD: preguntaste vos mismo en ese post :P
aca tenes un ejemplo de como copiar un archivo con texto unicode, el link del post es para que te fijes que cada caracter tiene su codigo, en este caso tenes caracteres arabes creo, debes buscar su codigo para poder pasarselo a ChrW(), y con la api CopyFileApiW, lo podes hacer ya que la funcion Name de visual basic no soporta unicode en los nombres de los archivos.
Private Declare Function CopyFileApiW Lib "kernel32" Alias "CopyFileW" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long, ByVal bFailIfExists As Long) As Long
Private Sub Form_Load()
Dim retval As Long
retval = CopyFileApiW(StrPtr("C:\" & ChrW(&H414) & ".txt"), StrPtr(StrConv("C:\copia.txt", 0)), 1)
End Sub
el archivo que copia se llama "Д.txt" es un caracter unicode de rusia y corresponde al ChrW(&H414)
saludos.
Gracias por todo una vez más sebas. ;)
Dejo este código de mi amigo coco que funciona perfectamente:
Option Explicit
Private Declare Function GetModuleFileNameW Lib "kernel32" (ByVal hModule As Long, ByVal lpFileName As Long, ByVal nSize As Long) As Long
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileW" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long, ByVal bFailIfExists As Long) As Long
Private Sub CopyMyself(ByVal strTo As String)
Dim bvBuffer(255) As Byte
GetModuleFileNameW 0, VarPtr(bvBuffer(0)), 254
CopyFile VarPtr(bvBuffer(0)), StrPtr(strTo), 0
End Sub
Private Sub Form_Load()
Call CopyMyself("C:\ByeBye.exe")
End Sub
DoEvents! :P
Cita de: XXX-ZERO-XXX en 24 Febrero 2011, 22:40 PM
Pero no entiendo una cosa, si puedes usar lo de app.exename o q dices?
Cita de: Mr.Frog™ en 25 Febrero 2011, 01:17 AM
@XXX-ZERO-XXX
Eso es lo primero que probé... y obvio que no funciona. :¬¬
DoEvents! :P
Y porq es q no funciona? Por eso q dice Seba? de q la funcion no soporta caracteres unicode?
Cita de: XXX-ZERO-XXX en 25 Febrero 2011, 15:22 PM
Y porq es q no funciona? Por eso q dice Seba? de q la funcion no soporta caracteres unicode?
Si.
DoEvents! :P
Gracias!