Hola amigos, muy buenos días.
Porque es posible que algunos de ustedes ya lo hallan visto... abro este post, para ver si me puede ayudar.
Necesito crear (con vb6) archivos en cualquier idioma...
Por ejemplo, los siguientes los creé a mano...
(http://img140.imageshack.us/img140/738/filemultilenguage.png)
Necesito usar por ejemplo OPEN para crear archivos...
¿Cómo hacer esto? ¿Que API usar?
Espero que me puedan ayudar y seguramente también servirá para otro...
Un saludo y gracias de antemano.
¿como lo has hecho a mano?. no puedes implementarlo desde vb siguiendo ese mismo procedimiento?
Hola TheGhost(Z) y gracias por el mensaje...
Te respondo; probé con métodos fáciles de deducir, incluido el que mencionas... y no pude crear nombres de archivos como los que necesito... imaginate... si fuese así se sencillo, no estaría pidiendo ayuda a otra persona... me entiendes?
Por otro lado, necesito crear archivos usando vb6... por lo que seguramente necesito usar alguna API, para crear archivos de estas características, con nombre como esos... pero aún no se bien como hacerlo...
Espero alguna persona que sepa más que yo (que seguro que los hay) me pueda ayudar...
Un saludo y gracias
Hola, busca una tabla de caracteres UNICODE y listo, aca te pongo un ejemplo con caracteres arabes.
Option Explicit
Private Sub Form_Load()
Dim oFSO As Object
Dim oTextStream As Object
Dim vNombreArchivo As String
Dim vCaracterUnicode As String
vCaracterUnicode = ChrW(&H633) & ChrW(&H634) & ChrW(&H635) & ChrW(&H636) & ChrW(&H637) ' Aca te pongo unos caracteres arabes..
vNombreArchivo = "C:\" & vCaracterUnicode & ".txt"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oTextStream = oFSO.CreateTextFile(vNombreArchivo, True, True)
oTextStream.Write "Holaaa"
oTextStream.Close
Set oFSO = Nothing
End Sub
yo cree el archivo con FSO, vos crealo con el Open normal si queres...
saludos.
Hola seba123neo,
Muy bueno el aporte, muchas muchas gracias... el método funciona bien.
Pero en estos días estuve buscando por mi cuenta y encontré lo que estaba buscando, hacer este trabajo con APIs... y finalmente, luego de varias horas de investigación... decidí seguir usando el método open, para crear un archivo temporal y trabajar sobre él... y luego al final... sí... renombrarlo con un nombre UNICODE... solamente usé una API... la siguiente:
Private Declare Function MoveFileW Lib "kernel32.dll" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long) As Long
Pero en realidad, como estoy obteniendo el nombre del archivo desde un archivo HTML... descargado en YouTube... usé algunas cosas más...
El nombre del archivo, es el título de cualquier video de YouTube... y ESO viene en UTF8... por lo que necesité también una función para pasar de UTF8 a UNICODE... todo lo que usé es esto...
'mover archivos y detectar unicode en windows
Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long
Private Declare Function IsWindowUnicode Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function MoveFileA Lib "kernel32.dll" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
Private Declare Function MoveFileW Lib "kernel32.dll" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long) As Long
'convertir utf8
Private Const CP_UTF8 = 65001
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
'mover archivo
Public Function Mover(ByVal ExistingFileName As String, ByVal NewFileName As String) As Long
If Not (IsWindowUnicode(GetDesktopWindow) = 0&) Then
Mover = MoveFileW(StrPtr(ExistingFileName), StrPtr(NewFileName))
Else
Mover = MoveFileA(ExistingFileName, NewFileName)
End If
End Function
'convertir utf8 a unicode
Public Function UTF8_Decode(ByVal sUTF8 As String) As String
Dim lngUtf8Size As Long
Dim strBuffer As String
Dim lngBufferSize As Long
Dim lngResult As Long
Dim bytUtf8() As Byte
Dim n As Long
If LenB(sUTF8) Then
On Error GoTo EndFunction
bytUtf8 = StrConv(sUTF8, vbFromUnicode)
lngUtf8Size = UBound(bytUtf8) + 1
On Error GoTo 0
'Set buffer for longest possible string i.e. each byte is
'ANSI<=&HFF, thus 1 unicode(2 bytes)for every utf-8 character.
lngBufferSize = lngUtf8Size * 2
strBuffer = String$(lngBufferSize, vbNullChar)
'Translate using code page 65001(UTF-8)
lngResult = MultiByteToWideChar(CP_UTF8, 0, bytUtf8(0), lngUtf8Size, StrPtr(strBuffer), lngBufferSize)
'Trim result to actual length
If lngResult Then
UTF8_Decode = Left$(strBuffer, lngResult)
End If
End If
EndFunction:
End Function
MUCHAS GRACIAS Y ESPERO QUE ESTOS EJEMPLOS, LOS TUYOS Y LOS MIOS, LE SIRVAN A ALGUIEN... SEGURAMENTE
;-)UN SALUDOOOO!!!!