Visual Basic - Problema con FileGet

Life is soft - evento anual de software empresarial
   
Vista:

Problema con FileGet

Publicado por Pedro (2 intervenciones) el 05/08/2009 19:45:13
Estimados , estoy migrando mi primer programa desde Visual 6.0 a 2008 y no me funciona correctamente el FileGet si habro el archivo en modo OpenMode.Random

tengo variable: Dim RegInd As New VB6.FixedLengthString(23)

y cuando la llamo con: FileGet(CanalI, RegInd.Value, RegI)

me dice Longitud de Registro Incorrecta

cabe señalar que si lo abro en modo FileOpen(CanalI, Ni, OpenMode.Binary) no tengo este problema pero no puedo trabajar con los indices.

adjunto un trozo de mi codigo, cualquier ayuda se los agradesco de ante mano, si pueden me escriben a mi correo netpablo@ hotmail.com o me dejan el suyo.

For ContRegsI = 1 To UltimoDocto

'If (ContRegsI Mod 2) = IZQUIERDA Then
'Procesando documento izquierdo
'RegI = RegStartLote + (ContRegsI + 1) / 2 - 1
RegI = PuntCol(Pc) 'RegStartLote + (ContRegsI + 1) / LxF - 1

'Estadística de proceso
'UPGRADE_WARNING: No se puede resolver la propiedad predeterminada del objeto Info.Caption. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
' Mod 03/08/2009 comentarizado
'''Info.Caption = "Dividiendo " & N & " (" & Str(Int((ContLotes / TotLotes) * 100)) & " %) " & Str(RegI)
lblInfo.Text = "Dividiendo " & N & " (" & Str(Int((ContLotes / TotLotes) * 100)) & " %) " & Str(RegI)
System.Windows.Forms.Application.DoEvents()
'Else
' RegI = RegStartLote + (ContRegsI * 0.5 + MitadLote) - 1
'End If

If PuntCol(Pc) > ((UltimoDocto - SaldoPag) + FinPaqAnt) Then
'UPGRADE_WARNING: Put se actualizó a FilePut y tiene un nuevo comportamiento. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"'
FilePut(CanalS2, GlosaIniDocto & vbCrLf)
'UPGRADE_WARNING: Put se actualizó a FilePut y tiene un nuevo comportamiento. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"'
FilePut(CanalS2, FF)

Else
'Leyendo el registro de la página a leer
'en el archivo de Indice
'UPGRADE_WARNING: Get se actualizó a FileGet y tiene un nuevo comportamiento. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"'

FileGet(CanalI, RegInd.Value, RegI)

'Byte de Inicio de la Hoja
StartByte = Val(Left(RegInd.Value, 10))

'Byte de Termino de la Hoja
EndByte = Val(Mid(RegInd.Value, 12, 10))

'Tamaño del Buffer
SizeDoc = EndByte - StartByte + 1

If Mid(RegInd.Value, 11, 1) <> "|" Then
MsgBox("Indice corrupto...", MsgBoxStyle.Critical, "Spool2AlAnchoSimplex")
Exit Function
End If

'Asigno el espacio de memoria para la lectura
Buf = Space(SizeDoc)

'Lectura del Docto
'UPGRADE_WARNING: Get se actualizó a FileGet y tiene un nuevo comportamiento. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"'
FileGet(CanalS, Buf, StartByte)

'Escribe Nuevo Spool de Impresión
'UPGRADE_WARNING: Put se actualizó a FilePut y tiene un nuevo comportamiento. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"'
FilePut(CanalS2, Buf)
End If
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con FileGet

Publicado por juan carlos (518 intervenciones) el 16/08/2009 03:28:09
intenta esto

Estimados , estoy migrando mi primer programa desde Visual 6.0 a 2008 y no me funciona correctamente el FileGet si habro el archivo en modo OpenMode.Random

tengo variable: Dim RegInd As New VB6.FixedLengthString(23)

y cuando la llamo con: FileGet(CanalI, RegInd.Value, RegI)

____________________________________________________
tengo variable: Dim RegInd As New VB6.FixedLengthString(36)

cambiale el 23 a 36
si quieres mandame el codigo para verificarlo aca
mega.juca@hotmail.es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar