Mit gebufferten Files einen Speedtest zu machen ist eher ungeschickt.
FileBuffersSize(#Datei, 0) solltest du schon machen.
WriteByte(1,ReadByte(0)) beschleunigen?
-
- Beiträge: 476
- Registriert: 23.03.2005 23:19
- 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
Die aktuelle Übertragungsrate mit nem Buffer von 0 anzeigen ist viel ungeschickter.
Wenns um die Messung der Geschwindigkeit versch. Vorgehensweisen geht,
ist es Okay, aber für die Anzeige der momentanen Übertragungszeit, wie es
viele Dateimanager machen, macht ein Buffer von 0 den Dateimanager eher
nutzlos.
Wenns um die Messung der Geschwindigkeit versch. Vorgehensweisen geht,
ist es Okay, aber für die Anzeige der momentanen Übertragungszeit, wie es
viele Dateimanager machen, macht ein Buffer von 0 den Dateimanager eher
nutzlos.
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: 476
- Registriert: 23.03.2005 23:19
- 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
In diesem Code: http://www.purebasic.fr/german/viewtopi ... 1&start=20
könnte man mit ElapsedMilliseconds() in der For-Next schleife so eine
Schätzung berechnen. Anstatt Progressebar zu setzen dann vielleicht mit
CallFunctionFast eine Callback-Procedure aktualisieren.
könnte man mit ElapsedMilliseconds() in der For-Next schleife so eine
Schätzung berechnen. Anstatt Progressebar zu setzen dann vielleicht mit
CallFunctionFast eine Callback-Procedure aktualisieren.
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.
So ich hab das beispiel ein wenig verändert.
Ganz so klasse ist es noch nich vieleicht findet jemand was besseres.
Mfg mknjc
Ganz so klasse ist es noch nich vieleicht findet jemand was besseres.
Code: Alles auswählen
Procedure CopyFileEx(Source.s, Dest.s, Progressbar.l = #PB_Any, Datenr.l = #PB_Any, BlockSize.l = 4096)
Protected FileSource.l, FileDest.l, Mem.l, Size.q, Bloecke.q, Rest.q, i.l, Prozent.f, Zeit.l, Datenrate.l
If BlockSize <= 0 : BlockSize = 1 : EndIf
FileSource = ReadFile(#PB_Any, Source)
FileDest = CreateFile(#PB_Any, Dest)
Mem = AllocateMemory(BlockSize)
If FileSource And FileDest And Mem
FileBuffersSize(FileSource, BlockSize)
FileBuffersSize(FileDest, BlockSize)
Size = Lof(FileSource)
Bloecke = Size / BlockSize
Rest = Size % BlockSize
Zeit = ElapsedMilliseconds()
For i = 1 To Bloecke
ReadData(FileSource, Mem, BlockSize)
WriteData(FileDest, Mem, BlockSize)
Prozent = ((BlockSize * i) / Size) * 100
If Progressbar > #PB_Any And IsGadget(Progressbar)
SetGadgetState(Progressbar, Prozent)
EndIf
If (timeGetTime_() - Zeit) / 1000
Datenrate = ((i * BlockSize) / ((ElapsedMilliseconds() - Zeit) / 1000)) / 1048576
If Datenr > #PB_Any And IsGadget(Datenr)
SetGadgetText(Datenr, Str(Datenrate))
EndIf
EndIf
Next
ReadData(FileSource, Mem, Rest)
WriteData(FileDest, Mem, Rest)
If Progressbar > #PB_Any And IsGadget(Progressbar)
SetGadgetState(Progressbar, 100)
EndIf
FreeMemory(Mem)
CloseFile(FileSource)
CloseFile(FileDest)
If FileSize(Dest) > 0
ProcedureReturn #True
EndIf
EndIf
ProcedureReturn #False
EndProcedure
If Not OpenWindow(0, #PB_Ignore, 0, 300, 135, "CopyFileEx") : End : EndIf
If Not CreateGadgetList(WindowID(0)) : End : EndIf
ProgressBarGadget(0, 10, 10, 280, 40, 0, 100, #PB_ProgressBar_Smooth)
TextGadget(1, 10, 60, 280, 20, "", #PB_Text_Center)
ButtonGadget(2, 120, 90, 60, 25, "Start")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_Gadget
If EventGadget() = 2
DisableGadget(1, #True)
CopyFileEx("/home/mknjc/Progen/Bastelspass/Riesendatei", GetTemporaryDirectory() + "Testdata", 0, 1, 102400)
DisableGadget(1, #False)
EndIf
EndSelect
ForEver
Ich nutze PureBasic 4.02 unter Linux und Windows.
Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
- HeX0R
- Beiträge: 2959
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Bin ja mal gespannt wie lange es dauern wird, bis auch in die letzte Ecke der User durchgedrungen ist, dass man eigene Beiträge auch löschen kann.
Sehr sinnvoll bei Doppelpostings wie hier.
Allerdings geht das auch nur solange kein anderer Depp (also in diesem Fall ich) darauf antwortet.
Ein sehr sinnvolles aber leider ungenutztes Feature dieses Boards.
Oder war es nur eine (ebenso typische) "Absenden-Klicken-und-Browser-Schliessen"-Tat ?
Sehr sinnvoll bei Doppelpostings wie hier.
Allerdings geht das auch nur solange kein anderer Depp (also in diesem Fall ich) darauf antwortet.
Ein sehr sinnvolles aber leider ungenutztes Feature dieses Boards.
Oder war es nur eine (ebenso typische) "Absenden-Klicken-und-Browser-Schliessen"-Tat ?