Using Array - very urgent

Dear friends'
   
i have two arrays one dimensioned and two dimensioned

    Dim arr1(2)
    Dim arr2(0, 2)
   
    arr1(0) = "one"
    arr1(1) = "two"
    arr1(2) = "three"
   
    i want to assign all the values in arr1 to arr2(0,0) directly without going through loop. Is it possible. In java it is possible if there is any way to do it in vb?

thanks
Paul
PaulMurugesanAsked:
Who is Participating?
 
TheMekConnect With a Mentor Commented:
As far as I know, not without loops. And btw, I take it you mean you want to assing the values to arr2(0, x).
0
 
rdrunnerCommented:
Do you want the VALUES or will the pointers to the Strings work?

0
 
GunsenCommented:
Not possible with VB 6, but in VB.net

In form load:
arr1 = Split("one","two","three")

For the 2-dim array i would prefer to make a function, that have to have loops.....
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
rdrunnerCommented:
If you are satisfied with the Pointers you can try this :

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)
Private Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" (Destination As Any, ByVal Length As Long)

Dim ar1(2) As String
Dim ar2(0, 2) As String

Private Sub Form_Load()
ar1(0) = "ONE"
ar1(1) = "Two"
ar1(2) = "Three"
CopyMemory ByVal VarPtr(ar2(0, 0)), ByVal VarPtr(ar1(0)), (UBound(ar1) + 1) * 4
End Sub

Carefull warning... If you want to redim ar1 at any time afterwards you need to Void all strings in there manually

Do this by calling

zeromemory byval varptr(ar1(0)), (ubound(ar1)+1)*4
0
 
uncle_medCommented:
Paul

You can as long as you declare arr2 as a variant. Try this:


   Dim arr1(2)
   Dim arr2
   
   arr1(0) = "one"
   arr1(1) = "two"
   arr1(2) = "three"
   '
   ' Assign array to variable. Arr2 becomes an array
   '  
   arr2 = arr1


Hope it helps,

Med
0
 
uncle_medCommented:
  This one works too, but all values are assigned to the 0th element of arr2. So effectively you end up with an array hanging off the 0th element of arr2.
 Remember it only works, because it's a variant array.


   Dim arr1(2)
   Dim arr2(0, 2)
   
   arr1(0) = "one"
   arr1(1) = "two"
   arr1(2) = "three"
   
   
   arr2(0, 0) = arr1


Hope it helps,

Med

0
 
QJohnsonCommented:
What value to you want in Arr2(0,0)?

Are you trying for "one,two,three"?  Just use:

Arr2(0,0) = Join(Arr1,",")

This works with both arrays declared as Strings OR as Variants (as you have shown by not naming another type)

If you want something else, please show us.

-------------
Please note, the Split() function is certainly available in VB6; not just .NET.  It is also available in Access2K VBA.  So you could use it to put those values from Arr2(0,0) back into Arr1 with:

Arr1 = Split(Arr2(0,0), ",")

PROVIDED that (a) arr1 is declared dynamically and (b) both arrays are declared as type String.  You cannot assign the return of a Split() function call to a static array (perhaps you can do this in .NET and this may have been the poster's intent).
0
 
rdrunnerCommented:
I THINK he wants this

ar1(0) -> ar2(0,0)
ar1(1) -> ar2(0,1)
ar1(2) -> ar2(0,2)

If thats the case then a memory copy will do the trick...

If he wants this

ar2(0,0) = "one two three"

then it can be solved by a JOIN

ar2(0,0) = join(ar1," ")

STILL another option would be this
(if AR2 is a variant)
ar2(0,0) = ar1
->
debug.? ar2(0,0)(0)
-> one


0
 
QJohnsonCommented:
I've played that "I think he wants" game far too often with clients.  I'm sure not doing it here <g>.  Let's see how he responds.
0
 
rdrunnerCommented:
Hehe ;)
0
 
uncle_medCommented:
  This one works too, but all values are assigned to the 0th element of arr2. So effectively you end up with an array hanging off the 0th element of arr2.
 Remember it only works, because it's a variant array.


   Dim arr1(2)
   Dim arr2(0, 2)
   
   arr1(0) = "one"
   arr1(1) = "two"
   arr1(2) = "three"
   
   
   arr2(0, 0) = arr1


Hope it helps,

Med

0
 
PaulMurugesanAuthor Commented:
Dear friends

from the answers u have provided I think it is not possible to do that. with Loops it takes more time so i want to find out whether any possible ways of adding values to array without Loop.

I want solutions in VB not in vb.net

--Paul
0
 
PaulMurugesanAuthor Commented:
Dear friends

from the answers u have provided I think it is not possible to do that. with Loops it takes more time so i want to find out whether any possible ways of adding values to array without Loop.

I want solutions in VB not in vb.net

--Paul
0
 
rdrunnerCommented:
My answer didnt use a loop....
0
All Courses

From novice to tech pro — start learning today.