Android Code Snippet [B4X] CopyObject

aeric

Expert
Licensed User
Longtime User
Sorry, why you copy and paste out another snippet like chatGPT?
To improve this I suggest you give a few examples for beginners to understand it’s use cases. It would be more helpful.
 

LucaMs

Expert
Licensed User
Longtime User
Sorry, why you copy and paste out another snippet like chatGPT?
To improve this I suggest you give a few examples for beginners to understand it’s use cases. It would be more helpful.
This isn't a tutorial, it's where we post the snippets.
Since that this Erel's code is useful, I wanted to add it here.

(What does ChatGPT have to do with it? Don't answer, at least not here, it's not important 😊 )
 

aeric

Expert
Licensed User
Longtime User
I use CopyObject in my POS system. I add a small example here.

B4X:
Sub Class_Globals
    Private Root As B4XView
    Type SalesItem (Id As Int, Item_Name As String, Item_Unit As Int, Item_Price As Double, Item_Amount As Double)
End Sub

Public Sub Initialize

End Sub

Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("1")
    ShowExample
End Sub

Sub ShowExample
    Dim Item001 As SalesItem
    Item001.Initialize
    Item001 = CreateSalesItem(1, "Item 001", 1, 10, 10)
    Log ( $"Item ${Item001.Id}, ${Item001.Item_Name}, ${Item001.Item_Amount}"$ )
    Log ( "=========================================================================")
    Dim Item002 As SalesItem = Item001    ' <- Direct assignment
    Item002.Id = 2
    Item002.Item_Name = "Item 002"
    Item002.Item_Unit = 2
    Item002.Item_Amount = Item002.Item_Unit * Item002.Item_Price
    Log ( $"Item ${Item002.Id}, ${Item002.Item_Name}, ${Item002.Item_Amount}"$ )
    Log ( $"Item ${Item001.Id}, ${Item001.Item_Name}, ${Item001.Item_Amount} <- Item 001 changed"$ ) ' <- Item 001 changed
    Log ( "=========================================================================")
    Dim Item003 As SalesItem = CopyObject(Item002) ' <- CopyObject
    Item003.Id = 3
    Item003.Item_Name = "Item 003"
    Item003.Item_Price = 30
    Item003.Item_Amount = Item003.Item_Unit * Item003.Item_Price
    Log ( $"Item ${Item003.Id}, ${Item003.Item_Name}, ${Item003.Item_Amount}"$ )
    Log ( $"Item ${Item002.Id}, ${Item002.Item_Name}, ${Item002.Item_Amount} <- Item 002 not changed"$ ) ' <- Item 002 not changed
End Sub

Public Sub CopyObject (obj As Object) As Object
    Dim ser As B4XSerializator ' RandomAccessFile library
    Return ser.ConvertBytesToObject(ser.ConvertObjectToBytes(obj))
End Sub

Public Sub CreateSalesItem (Id As Int, Item_Name As String, Item_Unit As Int, Item_Price As Double, Item_Amount As Double) As SalesItem
    Dim t1 As SalesItem
    t1.Initialize
    t1.Id = Id
    t1.Item_Name = Item_Name
    t1.Item_Unit = Item_Unit
    t1.Item_Price = Item_Price
    t1.Item_Amount = Item_Amount
    Return t1
End Sub

B4X:
Item 1, Item 001, 10.0
=========================================================================
Item 2, Item 002, 20.0
Item 2, Item 002, 20.0 <- Item 001 changed
=========================================================================
Item 3, Item 003, 60.0
Item 2, Item 002, 20.0 <- Item 002 not changed
 
Top