AllocateMemory() schneller als ReadFile()?

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

AllocateMemory() schneller als ReadFile()?

Beitrag von RSBasic »

Hi, ich habe eine Frage. Es gibt zwei Möglichkeiten (oder auch mehr, aber nur diese zwei sind wichtig), wie man den Inhalt einer Datei in ein EditorGadget einfügt. Meine Frage ist, welcher Befehl schneller ist?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Was hat denn AllocateMemory() mit einem EditorGadget zutun ?
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 »

Wenn es ums laden von Text in ein EditorGadget unter Window geht:

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 FF_File = ReadFile(#PB_Any, File)
  If FF_File
    StreamData\dwCookie = FileID(FF_File)
    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(FF_File)
  EndIf
EndProcedure
Ansonsten, es ist schneller den gesamten Text mit ReadData auf einmal zu
lesen, als mit ReadString, vorausgesetzt es sind mehr als 3 Zeilen :wink:

//typo korrigiert
Zuletzt geändert von ts-soft am 19.11.2006 17:42, insgesamt 1-mal geändert.
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
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Ansonsten, es ist schneller den gesamten Text mit ReadDate auf einmal zu
lesen, als mit ReadString, vorausgesetzt es sind mehr als 3 Zeilen
Oder einfach
FileBuffersSize(#file, Lof(#file))
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Beitrag von dige »

Huch! Seit wann gibt es denn diese Buffer-Zugriffe?? Verdammt, ich werde
mir mal die Hilfe komplett durchlesen müssen ... ;-)
"Papa, ich laufe schneller - dann ist es nicht so weit."
Gesperrt