Visual Basic - Ayuda con este *.INI

Life is soft - evento anual de software empresarial
 
Vista:

Ayuda con este *.INI

Publicado por carlitro8 (9 intervenciones) el 09/07/2006 23:24:34
Por qué no me funciona este código???

Private Sub Form_Load()
strBuffer = String(255, " ")
GetPrivateProfileString "Ganadores", "Ganadores", 0, strBuffer, 255, App.Path + "\Historico.ini"
i = strBuffer
ReDim ganadores((strBuffer - 1)) As Integer
For i = 0 To Val((strBuffer) - 1)
Text1(i).Visible = True
ganadores(i) = GetPrivateProfileString("NombresPes", i, "", strBuffer, 255, App.Path + "\Historico.ini")
Text1(i).Text = strBuffer
Next i
End Sub

Me da error "type mismatch" en la y me queda señalada la variable "i" de la siguiente línea:

ganadores(i) = GetPrivateProfileString("NombresPes", i, "", strBuffer, 255, App.Path + "\Historico.ini")

No sé a que es debido :S

Si alguien tiene alguna idea se lo agradecería. Por cierto tengo un módulo con el siguiente código:

Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Dim ganadores() As Integer
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:Ayuda con este *.INI

Publicado por Guido (71 intervenciones) el 09/07/2006 23:59:19
esto no puede funcionar...
For i = 0 To Val((strBuffer) - 1)

tal vez esto si:
For i = 0 To Val((strBuffer)) - 1

saludos
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

RE:Ayuda con este *.INI

Publicado por carlitro8 (9 intervenciones) el 10/07/2006 00:08:57
gracias por responder. lo he corregido ya pero no era eso, el error del TYPE MISMATCH persiste. Muchas gracias de nuevo.
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

RE:Ayuda con este *.INI

Publicado por guido (71 intervenciones) el 10/07/2006 00:26:12
a ver..
en primer lugar, no veo declaraciones de tipos de variables, por lo que la
variable StrBuffer es del tipo Variant. Al asignarle una string (linea 2 de tu codigo)
asume ese tipo. EN la linea 3 de tu codigo se asigna el contenido a una variable i que tambien se asume variant por no tener tipo declarado, y al pasarle una string, tambien i es una cadena.
probá declarar antes:

dim i as integer
dim StrBuffer as string

Private Sub Form_Load()
strBuffer = String(255, " ")
GetPrivateProfileString "Ganadores", "Ganadores", 0, strBuffer, 255, App.Path + "\Historico.ini"
i = strBuffer
ReDim ganadores((strBuffer - 1)) As Integer
For i = 0 To Val((strBuffer) - 1)
Text1(i).Visible = True
ganadores(i) = GetPrivateProfileString("NombresPes", i, "", strBuffer, 255, App.Path + "\Historico.ini")
Text1(i).Text = strBuffer
Next i
End Sub

Es conveniente declarar los tipos siempre, y además usar 'Option explicit' al comienzo de cada módulo para evitar dolores de cabeza
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

RE:Ayuda con este *.INI

Publicado por daniel (145 intervenciones) el 11/07/2006 17:44:57
Creo que el error de tipo incompatible es porque le pedis que lo haga al val(strbuffer) que tiene 255 espacios - 1 por ende no sabe que operar ya que es el valor de los 255 caracteres espacios, si entiendo lo que queres hacer mas que el val de la variable, tendrias que tener el len de la misma, espero que sea eso. te mando saludos.
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

RE:Ayuda con este *.INI

Publicado por CMZ (31 intervenciones) el 11/07/2006 23:38:37
debes usar GetPrivateProfileInt porque intentas leer un entero.

Private Sub Form_Load()
Dim i As Integer, iGanadores As Integer
Dim sBuffer As String, sGanadores() As String

sBuffer = String$(255, " ")
iGanadores = GetPrivateProfileInt("GanadoresPes", "Ganadores", -1, App.Path & "\Historico.ini")

ReDim sGanadores(1 To iGanadores) As String
For i = 1 To iGanadores
Call GetPrivateProfileString("NombresPes", CStr(i), "", sBuffer, 255, App.Path & "\Historico.ini")
sGanadores(i) = sBuffer
MsgBox sGanadores(i)
Next
End Sub
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