Code: Alles auswählen
Procedure.s GetDatabaseText()
If DatabaseQuery("SELECT LENGTH(text) FROM table WHERE 1;")
If NextDatabaseRow()
result$="" : size=Val(GetDatabaseString(0))
For i=1 To size Step 4095
If DatabaseQuery("SELECT SUBSTRING(text,"+Str(i)+",4095) FROM table WHERE 1;")
If NextDatabaseRow() : result$+GetDatabaseString(0) : EndIf
EndIf
Next
ProcedureReturn result$
EndIf
EndIf
EndProcedure
Mein Vorschlag (da anscheinend die Grenze des Strings bei 8192 Byte = 8 kb liegen; mehr habe ich nicht herausbekommen bei dieser Abfrage) wäre ein Array zu definieren, wobei jedes Element eben 8192 Bytes aufnimmt.
Am Ende lesen wir dieses Array aus und fügen es (beim Schreiben in eine Datei) einfach zusammen.
Code: Alles auswählen
Dim blobArray.s[255]
Procedure.s GetDatabaseBlob()
If DatabaseQuery("SELECT LENGTH(text) FROM table WHERE 1;")
If NextDatabaseRow()
result$=""
step=0
size=Val(GetDatabaseString(0))
For i=1 To size Step 4095
If DatabaseQuery("SELECT BINARY SUBSTRING(text,"+Str(i)+",4095) FROM table WHERE 1;")
If NextDatabaseRow()
;Hier eine Schleife um Step alle zwei Schritte abzufangen
;hab keinen Plan was hier stehen könnte
blobArray.s[step] = GetDatabaseString(0)
EndIf
EndIf
Next
ProcedureReturn result$
EndIf
EndIf
EndProcedure