I have a big problem concerning arrays.
I have an array of structs that is deply implemented in the code. If i
change this implementation then i have to change everything, so after
searching google and a lot of newsgroups i came up with this question:
With the following array, how can i make a search without having to use a
loop to seek for a certain "thing" in the array of structs?
(i've tryed to use array.find(), but because its an array of structs i just
wasn't able to make it work)
Friend Sub AdicionaPontosA Imagem(ByVal ValorX As Long, ByVal ValorY As Long,
ByVal strNomePonto As String, _
ByVal lngHwnd As Long, ByVal strNomeAnalise As String, _
Optional ByRef myGraphics As System.Drawing. Graphics = Nothing)
Dim lngContador As Long
Dim bolFlag As Boolean
bolFlag = False
If ArrayPontos(0). bolInicializaca o = True Then
ArrayPontos(0). bolInicializaca o = False
ArrayPontos(0). strNomePonto = strNomePonto
ArrayPontos(0). lngValorX = ValorX
ArrayPontos(0). lngValorY = ValorY
ArrayPontos(0). strAbreviatura =
BD.retornaAbrev iaturaDeDetermi nadoPonto(strNo mePonto)
ArrayPontos(0). Posicoes.intPre enchidas = 0
ArrayPontosImg( 0).bolInicializ acao = False
ArrayPontosImg( 0).lngValorX = ValorX
ArrayPontosImg( 0).lngValorY = ValorY
ReDim ArrayPontosImg( 0).ptnPontos(5)
ArrayPontosImg( 0).ptnPontos(0) .X = ValorX
ArrayPontosImg( 0).ptnPontos(0) .Y = ValorY - 1
ArrayPontosImg( 0).ptnPontos(1) .X = ValorX
ArrayPontosImg( 0).ptnPontos(1) .Y = ValorY
ArrayPontosImg( 0).ptnPontos(2) .X = ValorX
ArrayPontosImg( 0).ptnPontos(2) .Y = ValorY + 1
ArrayPontosImg( 0).ptnPontos(3) .X = ValorX - 1
ArrayPontosImg( 0).ptnPontos(3) .Y = ValorY
ArrayPontosImg( 0).ptnPontos(4) .X = ValorX + 1
ArrayPontosImg( 0).ptnPontos(4) .Y = ValorY
If (defPerfilGloba l = DefinicaoPerfil .pontosFulcrais ) AndAlso (Not
IsNothing(myGra phics)) Then
identificaPerfi lAutomaticament e(myGraphics)
End If
Else
For lngContador = 0 To UBound(ArrayPon tos) - 1
If ArrayPontos(lng Contador).strNo mePonto = strNomePonto Then
ArrayPontos(lng Contador).lngVa lorX = ValorX
ArrayPontos(lng Contador).lngVa lorY = ValorY
ArrayPontos(lng Contador).strAb reviatura =
BD.retornaAbrev iaturaDeDetermi nadoPonto(strNo mePonto)
ArrayPontosImg( lngContador).bo lInicializacao = False
ArrayPontosImg( lngContador).ln gValorX = ValorX
ArrayPontosImg( lngContador).ln gValorY = ValorY
ReDim ArrayPontosImg( lngContador).pt nPontos(5)
ArrayPontosImg( lngContador).pt nPontos(0).X = ValorX
ArrayPontosImg( lngContador).pt nPontos(0).Y = ValorY - 1
ArrayPontosImg( lngContador).pt nPontos(1).X = ValorX
ArrayPontosImg( lngContador).pt nPontos(1).Y = ValorY
ArrayPontosImg( lngContador).pt nPontos(2).X = ValorX
ArrayPontosImg( lngContador).pt nPontos(2).Y = ValorY + 1
ArrayPontosImg( lngContador).pt nPontos(3).X = ValorX - 1
ArrayPontosImg( lngContador).pt nPontos(3).Y = ValorY
ArrayPontosImg( lngContador).pt nPontos(4).X = ValorX + 1
ArrayPontosImg( lngContador).pt nPontos(4).Y = ValorY
bolFlag = True
Exit For
End If
Next
If Not bolFlag Then
ReDim Preserve ArrayPontos(UBo und(ArrayPontos ) + 1)
ArrayPontos(UBo und(ArrayPontos ) - 1).bolInicializ acao = False
ArrayPontos(UBo und(ArrayPontos ) - 1).strNomePonto = strNomePonto
ArrayPontos(UBo und(ArrayPontos ) - 1).lngValorX = ValorX
ArrayPontos(UBo und(ArrayPontos ) - 1).lngValorY = ValorY
ArrayPontos(UBo und(ArrayPontos ) - 1).strAbreviatu ra =
BD.retornaAbrev iaturaDeDetermi nadoPonto(strNo mePonto)
ArrayPontos(UBo und(ArrayPontos ) - 1).Posicoes.int Preenchidas = 0
ReDim Preserve ArrayPontosImg( UBound(ArrayPon tosImg) + 1)
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).bolInicializ acao = False
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).lngValorX = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).lngValorY = ValorY
ReDim ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(5)
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(0) .X = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(0) .Y = ValorY - 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(1) .X = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(1) .Y = ValorY
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(2) .X = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(2) .Y = ValorY + 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(3) .X = ValorX - 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(3) .Y = ValorY
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(4) .X = ValorX + 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(4) .Y = ValorY
If (defPerfilGloba l = DefinicaoPerfil .pontosFulcrais ) AndAlso (Not
IsNothing(myGra phics)) Then
identificaPerfi lAutomaticament e(myGraphics)
End If
End If
End If
TracaRectas(lng Hwnd, strNomeAnalise)
RaiseEvent registaPontoNaL istagem(strNome Ponto)
End Sub
I have an array of structs that is deply implemented in the code. If i
change this implementation then i have to change everything, so after
searching google and a lot of newsgroups i came up with this question:
With the following array, how can i make a search without having to use a
loop to seek for a certain "thing" in the array of structs?
(i've tryed to use array.find(), but because its an array of structs i just
wasn't able to make it work)
Friend Sub AdicionaPontosA Imagem(ByVal ValorX As Long, ByVal ValorY As Long,
ByVal strNomePonto As String, _
ByVal lngHwnd As Long, ByVal strNomeAnalise As String, _
Optional ByRef myGraphics As System.Drawing. Graphics = Nothing)
Dim lngContador As Long
Dim bolFlag As Boolean
bolFlag = False
If ArrayPontos(0). bolInicializaca o = True Then
ArrayPontos(0). bolInicializaca o = False
ArrayPontos(0). strNomePonto = strNomePonto
ArrayPontos(0). lngValorX = ValorX
ArrayPontos(0). lngValorY = ValorY
ArrayPontos(0). strAbreviatura =
BD.retornaAbrev iaturaDeDetermi nadoPonto(strNo mePonto)
ArrayPontos(0). Posicoes.intPre enchidas = 0
ArrayPontosImg( 0).bolInicializ acao = False
ArrayPontosImg( 0).lngValorX = ValorX
ArrayPontosImg( 0).lngValorY = ValorY
ReDim ArrayPontosImg( 0).ptnPontos(5)
ArrayPontosImg( 0).ptnPontos(0) .X = ValorX
ArrayPontosImg( 0).ptnPontos(0) .Y = ValorY - 1
ArrayPontosImg( 0).ptnPontos(1) .X = ValorX
ArrayPontosImg( 0).ptnPontos(1) .Y = ValorY
ArrayPontosImg( 0).ptnPontos(2) .X = ValorX
ArrayPontosImg( 0).ptnPontos(2) .Y = ValorY + 1
ArrayPontosImg( 0).ptnPontos(3) .X = ValorX - 1
ArrayPontosImg( 0).ptnPontos(3) .Y = ValorY
ArrayPontosImg( 0).ptnPontos(4) .X = ValorX + 1
ArrayPontosImg( 0).ptnPontos(4) .Y = ValorY
If (defPerfilGloba l = DefinicaoPerfil .pontosFulcrais ) AndAlso (Not
IsNothing(myGra phics)) Then
identificaPerfi lAutomaticament e(myGraphics)
End If
Else
For lngContador = 0 To UBound(ArrayPon tos) - 1
If ArrayPontos(lng Contador).strNo mePonto = strNomePonto Then
ArrayPontos(lng Contador).lngVa lorX = ValorX
ArrayPontos(lng Contador).lngVa lorY = ValorY
ArrayPontos(lng Contador).strAb reviatura =
BD.retornaAbrev iaturaDeDetermi nadoPonto(strNo mePonto)
ArrayPontosImg( lngContador).bo lInicializacao = False
ArrayPontosImg( lngContador).ln gValorX = ValorX
ArrayPontosImg( lngContador).ln gValorY = ValorY
ReDim ArrayPontosImg( lngContador).pt nPontos(5)
ArrayPontosImg( lngContador).pt nPontos(0).X = ValorX
ArrayPontosImg( lngContador).pt nPontos(0).Y = ValorY - 1
ArrayPontosImg( lngContador).pt nPontos(1).X = ValorX
ArrayPontosImg( lngContador).pt nPontos(1).Y = ValorY
ArrayPontosImg( lngContador).pt nPontos(2).X = ValorX
ArrayPontosImg( lngContador).pt nPontos(2).Y = ValorY + 1
ArrayPontosImg( lngContador).pt nPontos(3).X = ValorX - 1
ArrayPontosImg( lngContador).pt nPontos(3).Y = ValorY
ArrayPontosImg( lngContador).pt nPontos(4).X = ValorX + 1
ArrayPontosImg( lngContador).pt nPontos(4).Y = ValorY
bolFlag = True
Exit For
End If
Next
If Not bolFlag Then
ReDim Preserve ArrayPontos(UBo und(ArrayPontos ) + 1)
ArrayPontos(UBo und(ArrayPontos ) - 1).bolInicializ acao = False
ArrayPontos(UBo und(ArrayPontos ) - 1).strNomePonto = strNomePonto
ArrayPontos(UBo und(ArrayPontos ) - 1).lngValorX = ValorX
ArrayPontos(UBo und(ArrayPontos ) - 1).lngValorY = ValorY
ArrayPontos(UBo und(ArrayPontos ) - 1).strAbreviatu ra =
BD.retornaAbrev iaturaDeDetermi nadoPonto(strNo mePonto)
ArrayPontos(UBo und(ArrayPontos ) - 1).Posicoes.int Preenchidas = 0
ReDim Preserve ArrayPontosImg( UBound(ArrayPon tosImg) + 1)
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).bolInicializ acao = False
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).lngValorX = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).lngValorY = ValorY
ReDim ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(5)
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(0) .X = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(0) .Y = ValorY - 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(1) .X = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(1) .Y = ValorY
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(2) .X = ValorX
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(2) .Y = ValorY + 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(3) .X = ValorX - 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(3) .Y = ValorY
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(4) .X = ValorX + 1
ArrayPontosImg( UBound(ArrayPon tosImg) - 1).ptnPontos(4) .Y = ValorY
If (defPerfilGloba l = DefinicaoPerfil .pontosFulcrais ) AndAlso (Not
IsNothing(myGra phics)) Then
identificaPerfi lAutomaticament e(myGraphics)
End If
End If
End If
TracaRectas(lng Hwnd, strNomeAnalise)
RaiseEvent registaPontoNaL istagem(strNome Ponto)
End Sub
Comment