Goedemorgen,
Ik heb een probleempje met globale array die ik heb gedeclareerd. In een procedure wordt de inhoud van deze array aangepast, maar na het verlaten van de array lijken de waardes verdwenen. Ik hoop dat iemand mij hier kan helpen...
De declaratie van de globale variabelen (vooronder de array "arrValueTable")
In de volgende procedure wordt een string in stukjes gesplitst.(Er wordt gezocht naar bepaalde waardes in de string, ascii 31 & 29. Als deze waardes worden gevonden, wordt er een stuk van de aangeleverde string in de array geplaatst. Dit werkt allemaal prima, ik kan zelfs via de debugger zien dat de array goed gevuld wordt....
Maar als ik de procedure via het volgende test programma aanroep, zie ik alles goed gaat (ook het vullen van de array). Echter bij het terugkomen in het test programma is de array leeg...
Ik zal wel moe zijn of ergens heel erg over heen kijken, maar ik heb geen idee wat er misgaat. Iemand anders een idea?
Alvast bedankt,
Rob.
Ik heb een probleempje met globale array die ik heb gedeclareerd. In een procedure wordt de inhoud van deze array aangepast, maar na het verlaten van de array lijken de waardes verdwenen. Ik hoop dat iemand mij hier kan helpen...
De declaratie van de globale variabelen (vooronder de array "arrValueTable")
Code:
Attribute VB_Name = "Test"
Option Compare Database
Option Explicit
Global blnErrorFound As Boolean ' Error found?
Global blnUserActive ' Is is an user executing the process or is it an automated process
Global dateWEGAExchange As Date ' Date/time last time information with WEGA is exchanged
Global dateWorkDate As Date ' Unique marker for session (date/time)
Global dateErrorDate As Date ' Date for the error-report
Global arrValueTable(10, 2) As String
In de volgende procedure wordt een string in stukjes gesplitst.(Er wordt gezocht naar bepaalde waardes in de string, ascii 31 & 29. Als deze waardes worden gevonden, wordt er een stuk van de aangeleverde string in de array geplaatst. Dit werkt allemaal prima, ik kan zelfs via de debugger zien dat de array goed gevuld wordt....
Code:
Public Sub M2W_GetValueStr(strValueTable As String)
Dim intLenStr As Integer ' Lengte string
Dim intPosition As Integer ' New position of strScanChr
Dim intLastPosition As Integer ' Last position of strScanChr
Dim intPointer As Integer ' Array-pointer 1st dimension
Dim intpointer2 As Integer ' Array-pointer 2e dimension
Dim intCounter As Integer ' Loop pointer 1st dimension
Dim intCounter2 As Integer ' Loop pointer 2e dimension
Dim strScanChr1 As String ' Character to scan for (ASCII 31)
Dim strScanChr2 As String ' Character to scan for (ASCII 29)
Dim strWorkString As String ' To store temporary the string to seach in
' ===================================================================================
' Initialize the array to NULL
For intCounter = 1 To 10
For intCounter2 = 1 To 2
arrValueTable(intCounter, intCounter2) = ""
Next intCounter2
Next intCounter
intLenStr = Len(strValueTable)
strScanChr1 = Chr(31)
strScanChr2 = Chr(29)
intLastPosition = 1
intPointer = 1 ' 1st dimenion of the arrray
intpointer2 = 1 ' 2e dimension of the array
strWorkString = strValueTable
Do Until intPosition = 0
' Determine if the result is a key-name (1) or a value (2)
If intpointer2 = 1 Then
intPosition = InStr(intLastPosition, strWorkString, strScanChr1, vbTextCompare)
arrValueTable(intPointer, intpointer2) = Mid(strWorkString, intLastPosition, _
intPosition - 1)
intpointer2 = 2
strWorkString = Mid(strWorkString, intPosition + 1)
intPosition = 1
intLastPosition = 1
Else
intPosition = InStr(intLastPosition, strWorkString, strScanChr2, vbTextCompare)
arrValueTable(intPointer, intpointer2) = Mid(strWorkString, intLastPosition, _
intPosition - 1)
intpointer2 = 1
strWorkString = Mid(strWorkString, intPosition + 1)
intPosition = 1
intLastPosition = 1
' If the second dimension entry in processed, move to the next array entry
intPointer = intPointer + 1
End If
Loop
End Sub
Maar als ik de procedure via het volgende test programma aanroep, zie ik alles goed gaat (ook het vullen van de array). Echter bij het terugkomen in het test programma is de array leeg...
Code:
Public Sub TestValueTable()
Dim strString As String
Dim intCounter As Integer
Dim intCounter2 As Integer
strString = "COMPANYTESTCOMPANYNAMEMarcelPHONE0123123123"
M2W_GetValueStr (strString)
For intCounter = 1 To 10
Debug.Print arrValueTable(intCounter, 1), arrValueTable(intCounter, 2)
Next
End Sub
Ik zal wel moe zijn of ergens heel erg over heen kijken, maar ik heb geen idee wat er misgaat. Iemand anders een idea?
Alvast bedankt,
Rob.