Hm, ich habe unter DOS mal ein Kopierprogramm mittels PowerBaisc 3.2 geschrieben.
Zumindest unter DOS war es möglich, einen Speicherbereich im RAM zu definieren und zu reservieren, in den dann mittels einer DOS-API-Funktion 64 kByte eingelesen und entsprechend auch wieder ausgelesen und geschrieben werden konnten.
Gibt es so eine Möglichkeit nicht auch systemübergreifend für PureBasic?
Wenn ich eine 2,5 GB große Datei byteweise einlesen und schreiben soll, dann kann ich ja in Ruhe zwischenzeitlich arbeiten gehen...
Jaja, zu den nicht immer guten aber alten DOS-Zeiten war manches anders und einfacher...
Dann reserviere doch 64kb Speicher, lese mit Readdata, schreibe mit
Writedata, und dann den nächsten Block, mußte nur mitrechnen wann alles
geschrieben wurde. Das ist nun wirklich kein Problem.
// Nachtrag:
Ungetestet und unvollständig, nur als Anregung
Procedure Progress(value)
;;;
EndProcedure
ReadFile = ReadFile(#PB_Any, "bla.txt")
WriteFile = CreateFile(#PB_Any, "dublikat.txt")
If ReadFile And WriteFile
Mem = AllocateMemory(16384) ; 64 KB
If Mem
Laenge = Lof(ReadFile)
While Laenge > 16384
ReadData(ReadFile, Mem, 16384)
WriteData(WriteFile, Mem, 16384)
Laenge - 16384
Progress(laenge)
Wend
ReadData(ReadFile, Mem, Laenge)
WriteData(WriteFile, Mem, Laenge)
CloseFile(ReadFile)
CloseFile(WriteFile)
FreeMemory(Mem)
EndIf
EndIf
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.
Sry, 64 KL
Dann eben so um die 65000, ist doch wurscht
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.
>> die zweierpotenzen
Hab so viel Potenzen
Seit es KiBi und ähnliches gibt, schätze ich solche Sachen nur noch, die
Festplattenhersteller machens auch nicht anders
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.
seit anbeginn der computerzeit hatte Kilo in diesem zusammenhang die bedeutung von 1024.
nach jahrzehnten merken das diese Hansel von der internationalen kommission,
und meckern: "Das dürft ihr nich, das is unser Präfix, sagt gefälligst was anderes."
dabei gehen sie absolut an der realität vorbei, weil 10-basierte zahlen in
der Programmierung absolut unnütz sind, kein mensch brauch sowas.
anstatt nun einfach zu sagen: "in einer 2-basierten umgebung wird die Bedeutung der Präfixe modifiziert"
saugen die sich neue präfixe aus den fingern, die nun alle verwenden sollen.
so was ähnliches würde schon früher probiert, als man den CPUs die möglichkeit gab,
im "Dezimal-Modus" zu rechnen.
dabei wurden von Hexadezimalzahlen nur die 0-9 ziffern verwendet,
jedes Nibble diente also zur darstellung einer Dezimalstelle statt einer Hexadezimalstelle.
also konnte man mit einem byte zahlen von 0-99 darstellen.
das war ein mißlungener versuch, die bytegrenzen sauber auf Dezimal zu beziehen.
diese neuen einheiten-präfixe sind ein ähnlich dämliches unterfangen,
und ehrlich gesagt, es interessiert mich nicht die bohne,
bei mir isn KiloByte 2^10, Megabyte 2^20, Gigabyte 2^30,
und ganz sauber die grenze des 32bit-adressraums 4GB,
und nicht bescheuerte 4,294967296 GB!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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.