ich experementiere gerade ein wenig und stelle eine seltsame Erscheinung fest.
Der untere Code erzeugt Dateien mit Random Dateninhalt mit einer definierten Grösse (mb_block_size.l = 50).
Das entspricht 50 MB pro Datei.
Alle Dateien werden erzeugt aber nur ein Teil von Ihnen wird auch mit Daten befüllt.
Gedacht hatte ich mir, wenn ich in einer Schleife einen Speicherbereich reserviere ihn dann befülle und schreibe, dann anschliessend den Speicherbereich wieder freigebe, sollte das gehen.
Aber irgendwas klappt mit dem Reservieren und Freigeben des Speicherbereiches nicht. Anscheinend ended das rausschreiben der Daten nur bis zu dem Punkt, wieviel Speicher das System zur Verfügung hat. Oder das ist in meinem Fall einfach nur Zufall.
Vielleicht kann mir hier jemand einen Schubs geben, woran es liegen könnte.
Grüße
Alen
Code: Alles auswählen
EnableExplicit
Enumeration
#random_file
EndEnumeration
Procedure CreateRandomDataBlockFile(count_of_files.l = 1, mb_block_size.l = 50)
Protected.l size_of_block = (1024 * mb_block_size) * 1024
Protected.s outfile, filename = "random", extension = "dat"
Protected.l *MemoryID, files
For files = 1 To count_of_files
*MemoryID = AllocateMemory(size_of_block)
If *MemoryID
RandomData(*MemoryID, size_of_block)
;FillMemory(*MemoryID, size_of_block)
outfile = GetPathPart(ProgramFilename()) + filename + Str(files) + "." + extension
If CreateFile(#random_file, outfile )
WriteData(#random_file, *MemoryID, size_of_block)
CloseFile(#random_file)
Else
Debug "Konnte die Datei " + outfile + " nicht erstellen!"
EndIf
EndIf
FreeMemory(*MemoryID)
Next
EndProcedure
CreateRandomDataBlockFile(10)