Ja, die Daten kommen zumindest in diesem Fall in einem Rutsch. ist aber auch so gewollt, um alle Daten abzurufen. Habe noch ein live-logging modus wie 'tail -f' unter Linux, aber der ist hier erstmal nicht relevant.
@Bisonte: Der Code geht leider nicht unter SpiderBasic. Aber dennoch danke für die Tipps
Hier mal eine einfache Code-Grundlage:
Code: Alles auswählen
Declare.i CloseWindowEvent()
Declare.i ReadFileCallback(Status, Filename$, File, SizeRead)
Enumeration
#Window_Main
#Gadget_Editor
#File
EndEnumeration
; ========================================================================
OpenWindow (#Window_Main, 0, 0, 600, 500, "slow EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget (#Gadget_Editor, 10, 10, 580, 480)
BindEvent (#PB_Event_CloseWindow, @CloseWindowEvent())
ReadFile (#File, "Testdatei3.txt", @ReadFileCallback())
; ========================================================================
Procedure CloseWindowEvent()
CloseWindow(EventWindow())
EndProcedure
Procedure ReadFileCallback(Status, Filename$, File, SizeRead)
Select Status
Case #PB_Status_Loaded
Debug "Dateigröße: " + StrD(SizeRead/1000) + " KBytes"
T1 = ElapsedMilliseconds()
fileContent.s = ReadString(#File, #PB_File_IgnoreEOL)
CloseFile(#File)
Debug "Datei laden: " + Str(ElapsedMilliseconds() - T1) + " ms"
T1 = ElapsedMilliseconds()
SetGadgetText(#Gadget_Editor, fileContent)
Debug "in EditorGadget einfügen: " + Str(ElapsedMilliseconds() - T1) + " ms"
Case #PB_Status_Error
Debug "File loading has failed"
EndSelect
EndProcedure
Den HTTP-Request und alles andere habe ich mal rausgekürzt. Der Code lädt hier eine Datei und packt den Inhalt in den EditorGadget. Je größer die Datei wird, desto länger dauert das Einfügen und um so träger reagiert die ganze Oberfläche.
Bei einer Datei mit 200K Zeilen erhalte ich folgende Debugausgabe:
Code: Alles auswählen
Dateigröße: 7193.449 KBytes
Datei laden: 712 ms
in EditorGadget einfügen: 65 ms
Die untere Messung ist auch falsch... warum auch immer. Das Einfügen dauert ca. 9 Sekunden und die Oberfläche reagiert kaum noch. Keine Ahnung wie die 65 ms zustande kommen.
Edit: Das Ergebnis kannst du natürlich mit jeder belibigen Datei reproduzieren.