Ich bin neu und habe probleme große Dateien in annehmbarer zeit in ein Editorgadget zu laden.
Ich fand zwar ein Beispiel das ich aber nur ausführen kann wenn ich eine "Ringslibrary" einbinde..
Das kann ich aber nicht und suche nach einer Alternative.
Hier 3 Zeilen aus dem Beispiel:
ADR=FastOpenFile(Filename.s)
SendMessage_(GadgetID(#EditorGadget), #EM_LIMITTEXT, -1, 0)
SendMessage_(GadgetID(#EditorGadget), #WM_SETTEXT, 0, ADR)
Die erste Zeile bezieht oder verknüpft zur "Rings Library" also ist eine eigene Struktur zu der ich keinen Zugang habe.
Mit den APi-Befehlen kann ich schon eher was anfangen. Kann ich #wm_settext
so mit eingelesenen Strings verknüpfen das ich auf diese Weise das Gadget füllen kann ohne addgadgetitem benutzen zu müssen - und bringt das einen Zeitvorteil beim laden?
Laden von grossen Files in das Editorgadget
Versuchs mal damit
http://www.purebasic.fr/german/viewtopi ... text#73073
http://www.purebasic.fr/german/viewtopi ... text#73073
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Große Dateien werden in ein EditorGadget am besten per Streaming geladen!
Beispiel für PB4:
FileID in UseFile ändern, dann sollte es auch mit 3.94 laufen.
Beispiel für PB4:
Code: Alles auswählen
Procedure _StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn ReadFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure Editor_Load(Gadget, File.s)
Protected StreamData.EDITSTREAM
Protected FileID.l
FileID = ReadFile(#PB_Any, File)
If FileID
StreamData\dwCookie = FileID(FileID)
StreamData\dwError = #Null
StreamData\pfnCallback = @_StreamFileIn_Callback()
If UCase(GetExtensionPart(File)) = "RTF"
SendMessage_(GadgetID(Gadget), #EM_STREAMIN, #SF_RTF, @StreamData)
Else
SendMessage_(GadgetID(Gadget), #EM_STREAMIN, #SF_TEXT, @StreamData)
EndIf
CloseFile(FileID)
EndIf
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Laden von grossen Files in das Editorgadget
die erste zeile ist eine adressverknüpfung, die anscheinend zum anbinden einer datei dient, die dann in zeile drei dem editorgadget übergeben wird...pbwild hat geschrieben:Code: Alles auswählen
ADR=FastOpenFile(Filename.s) SendMessage_(GadgetID(#EditorGadget), #EM_LIMITTEXT, -1, 0) SendMessage_(GadgetID(#EditorGadget), #WM_SETTEXT, 0, ADR)
(ich kenn die lib von rings auch nich)
der knackpunkt ist die zweite zeile:
hier wird (anscheinend) dem editorgadget eine maxgröße von -1 übergeben, also wohl so einigermaßen "unlimited"...
ich würde einfach mal ausprobieren, ob dieser API aufruf alleine dir schon hilft...
musst halt dann noch text reinkriegen...
der einwand von ts hat aber gültigkeit: streaming ist besser.
natürlich kannst du auch mit der PBOSL arbeiten, wie von bobobo vorgeschlagen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Sag mal, nach welchen Stichworten suchst du eigentlich?bobobo hat geschrieben:... &highlight=bibeltext ...



PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22