TextArea1 As TextArea
Public Sub Form_Open()
SetUp
Go
End
Public Sub Go()
Dim iLoop, iLetter As Integer
Dim sText As String[] = Split("En mi programa se repetía LostFocus y cree un programa de pruebas con el mismo código de Message en LostFocus pues siempre se repite LostFocus por que al pasar del TextBox1 y salir Message pues como estaba el puntero ya en TextBox2 pues vuelve a salir Message por que se produce de forma lógica el LostFocus. Y entonces que opinas es quizás un bug o es algo pensado. En fin que opinas. Por otra parte si esto es así, para validar que evento usáis por lo general.", " ")
For iLoop = 0 To sText.Max
For iLetter = 1 To Len(sText[iLoop])
If Asc(sText[iloop][iLetter]) > 127 Then TextArea1.Text &= sText[iloop] & gb.NewLine
Next
Next
End
Public Sub SetUp()
With Me
.Arrangement = Arrange.Vertical
.Padding = 5
.H = 250
.W = 200
End With
With TextArea1 = New TextArea(Me) As "TextArea1"
.Expand = True
End With
End
Dim aCadenas as String[] = ["Fecha de compras", "Descripción", "Año de Investigación", "Fecha creación"]
Dim aConComillasoNo as New String[]
'creo un array con cadenas entre comillas en el caso que tengan espacios ó tildes
For Each sCadena As String In aCadenas
sCadena = IIf(String.InStr(sCadena, " ") > 1 Or String.InStr(sCadena, "á") > 1 Or String.InStr(sCadena, "é") > 1 Or String.InStr(sCadena, "í") > 1 Or String.InStr(sCadena, "ó") > 1 Or String.InStr(sCadena, "ú") > 1, "'" & sCadena & "'", sCadena)
aConComillasoNo.Add(sCadena)
Next
Dim aConComillasoNo As New String[]
Dim b As Byte
Dim c As Short
'creo un array con cadenas entre comillas en el caso que tengan espacios o tildes:
For Each sCadena As String In aCadenas
c = 0
Repeat
Inc c
b = Asc(sCadena, c)
If (b == 32) Or (b > 127) Then
aConComillasoNo.Push("'" & sCadena & "'")
Break
Endif
Until b == 0
Next
Public Sub Main()
Dim tildes As String[] = ["á", "é", "í", "ó", "ú"]
Dim palabra As String = "adiós"
For a As Integer = 1 To String.Len(palabra)
If tildes.Exist(String.Mid$(palabra, a, 1)) Then
Print "Hay tílde"
Break
Endif
Next
End
(31-10-2020, 23:26)guizans escribió: he encontrado esta forma
(31-10-2020, 21:42)vuott escribió: De todos modos propongo este codigo:
(31-10-2020, 23:47)vuott escribió:(31-10-2020, 23:26)guizans escribió: he encontrado esta forma
Sì, pero las suposiciones son diferentes a las de tu primer ejemplo, ya que allí se partía del análisis de palabras.
Public Sub Main()
Dim tildes As String[] = ["á", "é", "í", "ó", "ú"]
Dim aCadenas As String[] = ["Fecha de compras", "Descripción", "Año de Investigación", "Fecha creación"]
Dim tilde As Boolean
For Each b As String In aCadenas
For a As Integer = 1 To String.Len(b)
If tildes.Exist(String.Mid$(b, a, 1)) Then
tilde = True
Break
Endif
Next
If tilde Then
Print b & ": Tiene tilde"
tilde = False
Else
Print b & ": No tiene tilde"
Endif
Next
End
(31-10-2020, 23:47)vuott escribió:(31-10-2020, 23:26)guizans escribió: he encontrado esta forma
Sì, pero las suposiciones son diferentes a las de tu primer ejemplo, ya que allí se partía del análisis de palabras.
Public Sub Main()
Dim tildes As String[] = ["á", "é", "í", "ó", "ú"]
Dim aCadenas As String[] = ["Fecha de compras", "Descripción", "Año de Investigación", "Fecha creación"]
Dim tilde As Boolean
For Each b As String In aCadenas
For a As Integer = 1 To String.Len(b)
If tildes.Exist(String.Mid$(b, a, 1)) Then
tilde = True
Break
Endif
Next
If tilde Then
Print b & ": Tiene tilde"
tilde = False
Else
Print b & ": No tiene tilde"
Endif
Next
End
Cita:Estoy especulando tratar una cadena como un array de caracteres pero creo que Gambas no esta en su lenguaje - Todavía -
dim palabra as string = "hola" print palabra[1]
(01-11-2020, 17:02)guizans escribió:
Gambas si que puede tratar los Strings como arrays.
Código:
dim palabra as string = "hola" print palabra[1]
Esto es válido. El problema que encontré es precisamente con los caracteres especiales como las tildes, las eñes, etcétera, que no las imprime. No se el motivo.
Un saludo.