Android Code Snippet [B4X] CopyObject

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.
 
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 ? )
 
I use CopyObject in my POS system. I add a small example here.

B4X: Copy
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: Copy
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
 
Back
Top