Aktuelle Zeit: 26.04.2018 21:16

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: SQLite kopieren
BeitragVerfasst: 07.11.2017 14:35 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Habe mal eine Hilfsfunktion geschrieben.

Habe aber noch nicht getestet ob das hier geht 'SetDatabaseBlob(Target, TargetIdx, 0, 0) ; <- Geht das ?'

Code:
; ***************************************************************************************

; 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

; ***************************************************************************************


Nach dem Aufruf DatabaseUpdate(...) die SetDatabaseFreeMemory() aufrufen um den allokierten Speicher for die Blob-Daten wieder frei zu geben

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye