Habe aber noch nicht getestet ob das hier geht 'SetDatabaseBlob(Target, TargetIdx, 0, 0) ; <- Geht das ?'
Code: Alles auswählen
; ***************************************************************************************
; SetDatabase helper by mk-soft
; Version v1.01
; Date 07.11.2017
Define NewList *SetDatabaseMemory()
Procedure SetDatabaseValue(Source, SourceIdx, Target, TargetIdx)
Protected result, type.i, size.i
Shared *SetDatabaseMemory()
type = DatabaseColumnType(Source, SourceIdx)
result = #True
Select type
Case #PB_Database_Long
SetDatabaseLong(Target, TargetIdx, GetDatabaseLong(Source, SourceIdx))
Case #PB_Database_String
SetDatabaseString(Target, TargetIdx, GetDatabaseString(Source, SourceIdx))
Case #PB_Database_Float
SetDatabaseFloat(Target, TargetIdx, GetDatabaseFloat(Source, SourceIdx))
Case #PB_Database_Double
SetDatabaseDouble(Target, TargetIdx, GetDatabaseDouble(Source, SourceIdx))
Case #PB_Database_Quad
SetDatabaseQuad(Target, TargetIdx, GetDatabaseQuad(Source, SourceIdx))
Case #PB_Database_Blob
size = DatabaseColumnSize(Source, SourceIdx)
If size
AddElement(*SetDatabaseMemory())
*SetDatabaseMemory() = AllocateMemory(size)
If *SetDatabaseMemory()
If GetDatabaseBlob(Source, SourceIdx, *SetDatabaseMemory(), size)
SetDatabaseBlob(Target, TargetIdx, *SetDatabaseMemory(), size)
Else
SetDatabaseBlob(Target, TargetIdx, 0, 0) ; <- Geht das ?
result = #False
Debug "Error SetDatabaeValue (Blob): No Blob Data"
EndIf
Else
SetDatabaseBlob(Target, TargetIdx, 0, 0) ; <- Geht das ?
result = #False
Debug "Error SetDatabaeValue (Blob): Out of Memory"
EndIf
Else
SetDatabaseBlob(Target, TargetIdx, 0, 0) ; <- Geht das ?
result = #False
Debug "Error SetDatabaeValue (Blob): No Blob Data"
EndIf
EndSelect
ProcedureReturn result
EndProcedure
Procedure SetDatabaseFreeMemory()
Shared *SetDatabaseMemory()
ForEach *SetDatabaseMemory()
If *SetDatabaseMemory()
FreeMemory(*SetDatabaseMemory())
EndIf
Next
ClearList(*SetDatabaseMemory())
EndProcedure
; ***************************************************************************************