Laden von grossen Files in das Editorgadget

Anfängerfragen zum Programmieren mit PureBasic.
pbwild
Beiträge: 1
Registriert: 12.04.2006 10:56

Laden von grossen Files in das Editorgadget

Beitrag von pbwild »

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?
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
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

Beitrag von ts-soft »

Große Dateien werden in ein EditorGadget am besten per Streaming geladen!
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
FileID in UseFile ändern, dann sollte es auch mit 3.94 laufen.
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.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Laden von grossen Files in das Editorgadget

Beitrag von Kaeru Gaman »

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)
die erste zeile ist eine adressverknüpfung, die anscheinend zum anbinden einer datei dient, die dann in zeile drei dem editorgadget übergeben wird...
(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.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

bobobo hat geschrieben:... &highlight=bibeltext ...
Sag mal, nach welchen Stichworten suchst du eigentlich? :lol: :D :mrgreen:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nach signifikanten, von denen er weis, dass sie in seinen posts drin sind...

...oder würdest du nach "Procedure" suchen...?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

@Andi
Suchen is halt 'ne Wissenschaft für sich 8)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten