Seite 1 von 3
Datei mit fester Größe erstellen
Verfasst: 22.05.2006 10:31
von funk.munich
Hi zusammen,
gibt es eine Möglichkeit eine Datei mit einer bestimmten Größe (z.B. 5 MB, ...) zu erstellen?
Hintergrund:
Ich mache öfters Speicher Tests und dort muss die Festplatte nur noch
eine bestimmten freien Speicherplatz besitzen. Anstatt dies immer manuell
zu machen würde ich dies gerne über ein kleines Tool machen.
Danke + Gruß,
Daniel
Verfasst: 22.05.2006 10:51
von Karl
Try this:
Code: Alles auswählen
*Mem = AllocateMemory(5 << 20)
If *Mem
CreateFile(1, "c:\MyFile.dat")
WriteData(1, *mem, 5 << 20)
CloseFile(1)
EndIf
Karl
-- bobobo konnte nicht wiederstehen wg. unten

Ro's Code macht außerdem nicht die gewünschte Dateigröße
Verfasst: 22.05.2006 10:51
von roherter
beispiel 1MB
Code: Alles auswählen
CreateFile(1,"d:/test.pop")
k=1024 ;1 Kilobyte
For a=0 To k*k
WriteByte(1,0)
Next
CloseFile(1)
Die Datei besteht nur aus nullen.
@karl mein code ist kleiner aber sonst

Verfasst: 22.05.2006 11:00
von funk.munich
Hi Karl,
super cool ... mehr muss man dazu garnicht machen. Das finde ich gut
Eine weitere Frage hätte ich jedoch noch.
Wenn ich mir die Größe der Datei unter Windows anschaue (Datei > rechte Maustaste | Eigenschaften) ...
welche Größe ist die korrekte? Also
- Size oder
- Size on Disc
Vielen Dank schon einmal für Deine schnelle Hilfe.
Gruß,
Daniel
Verfasst: 22.05.2006 11:14
von Karl
Die Größe auf dem Datenträger hängt mit der Größe eines Blocks zusammen:
echteDateiGröße <= GrößeaufDatenträger
wegen Speichersegmentierung (das Problem heisst interne Fragmentierung).
Benutzt wird also die größere Größe.
Gruß Karl
Verfasst: 22.05.2006 13:55
von AND51
Karl, deine Blocks und die Speichersegmentierung nennt man auch
Cluster 
Stimmt das so?
Verfasst: 22.05.2006 14:38
von Jilocasin
Es ist doch so...
- Die "Größe" bezieht sich auf den Inhalt der Datei, also die Bytes
- Die "Größe auf Datenträger" zeigt, wieviel Speicherplatz die Datei insgesammt zum Speichern auf dem Medium braucht.
...oder?

Verfasst: 22.05.2006 14:46
von Karl
@Jilocasin: So isses.
@AND51: Die Cluster gibt es nur bei FAT und NTFS. Woanders heissen die schlicht Blöcke (z. B. inode).
Gruß Karl
Verfasst: 22.05.2006 17:41
von funk.munich
Hi zusammen,
vielen Dank für die Hilfe. Das funxt einwandfrei.
Ich habe nur noch folgendes Problem:
z.B. die HDD hat noch 4381 MB frei
Wenn ich das mit dem Taschenrechner ausrechne, um die Bytes zu erhalten
bekomme ich 4381 MB = 4381 * 1024 * 1024 = 4593811456 Bytes heraus.
Wenn ich das nun im Programm ausprobiere, erhalte ich immer:
4381 MB = 4381 * 1024 * 1024 = 298844160
Ich gehe mal davon aus, dass der Datentyp LONG nicht dafür geeignet ist.
Welche höheren Datentypen kann ich denn für PB sonst noch nutzen?
Im Handbuch wird sich nämlich nur auf Byte, Word, Long, Float.
Danke + Gruß,
Daniel
Verfasst: 22.05.2006 18:12
von roherter
PB 4.0
Code: Alles auswählen
;.q=quad-9223372036854775808 bis +9223372036854775807
test.q= 4381 * 1024 * 1024
Debug test
bei PB 3.94 nimmste einfach .f (Float)