Seite 5 von 6

Verfasst: 10.10.2006 11:41
von Andy Dee
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... :shock:

Jaja, zu den nicht immer guten aber alten DOS-Zeiten war manches anders und einfacher... :roll:

Gruß

Verfasst: 10.10.2006 11:48
von ts-soft
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

Code: Alles auswählen

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

Verfasst: 10.10.2006 12:34
von HeX0R

Code: Alles auswählen

Mem = AllocateMemory(16384) ; 64 KB
:shock:

Verfasst: 10.10.2006 12:36
von ts-soft
HeX0R hat geschrieben:

Code: Alles auswählen

Mem = AllocateMemory(16384) ; 64 KB
:shock:
Sry, 64 KL :mrgreen:
Dann eben so um die 65000, ist doch wurscht

Verfasst: 10.10.2006 12:41
von Kaeru Gaman
65536...

die zweierpotenzen bis 2^16 sollte man aber wirklich im kopp haben....

Verfasst: 10.10.2006 12:45
von ts-soft
>> die zweierpotenzen
Hab so viel Potenzen :lol:
Seit es KiBi und ähnliches gibt, schätze ich solche Sachen nur noch, die
Festplattenhersteller machens auch nicht anders

Verfasst: 10.10.2006 13:03
von Kaeru Gaman
KiBi is eh der großte schwachsinn aller zeiten.

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!

Verfasst: 10.10.2006 13:04
von HeX0R
Bild

Verfasst: 12.10.2006 12:22
von Kaeru Gaman
Bild

Verfasst: 12.10.2006 13:10
von ts-soft
:lol:
JWD vermisse ich noch :mrgreen: