Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VB6 Tuple Equivalent?

I'm porting some C# code to VB6 because legacy applications. I need to store a list of pairs. I don't need to do associative lookups, I just need to be able to store pairs of items.

The snippet I'm porting from looks like this:

List<KeyValuePair<string, string>> listOfPairs;

If I were to port this to C++, I'd use something like this:

std::list<std::pair<string, string> > someList;

If this were python I'd just use a list of tuples.

someList.append( ("herp", "derp") )

I'm looking for a library type, but will settle for something else if necessary. I'm trying to be LAZY and not have to write cYetAnotherTinyUtilityClass.cls to get this functionality, or fall back on the so-often-abused string manipulation.

I've tried googling around, but VB6 is not really documented well online, and a lot of what's there is, well challenged. If you've ever seen BigResource, you'll know what I mean.

like image 855
Wug Avatar asked Aug 31 '12 20:08

Wug


People also ask

What is a tuple equivalent to in SQL?

A tuple is equivalent to row. A relational database, a row also called a tuple represents a single, implicitly structured data item in a table. A database table can be thought of as consisting of rows and columns.

How do I convert a visual basic tuple to net tuple?

Extension methods in the TupleExtensions class make it easy to convert between Visual Basic tuples and .NET Tuple objects. The ToTuple method converts a Visual Basic tuple to a .NET Tuple object, and the ToValueTuple method converts a .NET Tuple object to a Visual Basic tuple.

What are tuples in Visual Basic 2017?

Starting with Visual Basic 2017, the Visual Basic language offers built-in support for tuples that makes creating tuples and accessing the elements of tuples easier. A tuple is a lightweight data structure that has a specific number and sequence of values.

What is the difference between a tuple and row?

A tuple is equivalent to row. A relational database, a row also called a tuple represents a single, implicitly structured data item in a table. A database table can be thought of as consisting of rows and columns. In relational databases, a tuple is one record (one row).


2 Answers

If its literally just for storage you can use a Type:

Public Type Tuple
    Item1 As String
    Item2 As String
End Type

Its a bit more concise than needing a class to do the storage.

The problem with Types (known more widely as UDTs) is that there are restrictions on what you can do with them. You can make an array of a UDT. You cannot make a collection of a UDT.

In terms of .Net they're most similar to Struct.

There's a walkthrough of the basics here or here.

like image 33
Jon Egerton Avatar answered Sep 22 '22 06:09

Jon Egerton


Collections of Variants can be quite flexible and unless you are really beating on them performance is not an issue:

Private Sub SomeCode()
    Dim Pair As Variant
    Dim ListOfPairs As Collection

    Set ListOfPairs = New Collection

    With ListOfPairs
        Pair = Array("this", "that")
        .Add Pair

        .Add Array("herp", "derp")

        .Add Array("weet", "tweet")

        MsgBox .Item(1)(0) 'Item index is base-1, array index base-0.

        Pair = .Item(2)
        MsgBox Pair(1)

        ReDim Pair(1)
        Pair(0) = "another"
        Pair(1) = "way"
        .Add Pair
        MsgBox .Item(4)(1)
    End With
End Sub
like image 68
Bob77 Avatar answered Sep 23 '22 06:09

Bob77