Hallo Reinhard,
k.A., ich gehe von irgendeinem Windows aus.
Wenn du auf der Seite gelesen hast, macht es imenze Unterschiede je nachdem auf Welchen OS es läuft. Streckenweise hast du nur 64Kb an Speicher zur Verfügung
Nein, in dem Fall nicht.
Im unten nachfolgenden Code wird bei f.size 200000000, also
200 Millionen Bytes angezeigt.
Explorer zeigt 195313 KB an. Was wohl richtig ist wegen
200000000/1024=195312,5.
(Ich habe 200 MB genommen weil mir 2 GB zum Testen zu lange
laufen, mal weglassend daß es sich um MiBi und GiBi handelt
*gg*)
Da hast du mich falsch verstanden ;( Mit der Aussage das jedes Zeichen 2 Byte belegt, war auf VB und deren internen Speicherreservierung bezogen. Steht glaube auch auf der Seite, wenn ich mich recht entsinne
Nein, nur ein Zeitproblem.
Richtig, das du so oder so hast
Okay, die Ermittlung des Höchstwertes hat mir zu lang gedauert
-), ich hab einfach mal im Code 100 Millionen genommen als
Häppchengröße genommen.
Bei mir hat das nur gestartet von 2 GB, gerade mal 9,005 Sekunden gedauert
Ich kann zwar die neue Datei mit „For Input“ öffnen und dann
rel. kleine Sätze nacheinander reinschreiben mit „Print“, aber
bei 2 GB glaube ich daß dies lange dauert.
Ich hatte glaube einen Wert von 196509878 oder so gehabt. Also waeren es nicht allzu viele Durchlaeufe gewesen. Aber dies zu testen, dazu kam ich nicht, da genau in dem Moment, wo ich die Sub fertig getippselt habe, mein VB abschmierte und ich es nicht gespeichert hatte *grml*
Aber so viele Durchlaeufe sind das nicht und ich denke mal, das man das alles zusammen so pi mal daumen binnen 30 Sekunden haette machen können.
Aber, mal was anderes. Punkto API. Gibt es da zufaellig eine?
Und was mir auch noch einfaellt. Das man dieses File mit Zufallszahlen füllen soll, das dies dann Arsch lange dauert ist klar. Dabei ist das füllen der grösste und Intensivste aufwand!
Sollte man dies aber nicht benötigen. Wie waere es dann, wenn man einfach die Shell dazu nutzt und auf Windows Bordmittel zurueckgreift?
Start -> Ausführen -> Cmd
und dann gib ma folgendes ein
fsutil file createnew c:\gross.txt 2147483648
Was meinste denn was da binnen 1 Sekunde geschehen ist, sofern auf dem Laufwerk C die Datei gross.txt nicht existiert
Bei mir WinXP, Pentium® 4 mit 1,7Ghz, 512 MB RAM, braucht
mein Code aber schon gefühlte 3 Minuten für eine Datei von 200
Mio Bytes.
Noch dazu ohne Zufallszeichen.
Ach herje ;/
k.A. sehr aktiv ist er in der beitragsfolge nicht grad *gg*
Und warum bemuehst du dich dann so?
0,1? Bytes, Bits, komme grad durcheinander
Ich meinte wenn nur Daten vom Datentyp Boolean eintragen willst, also entweder eine 1 oder eine 0
„fix“ *hüstel* *lächel*
Jups, bin auch grad nen bissl am verzweifeln
http://www.meinews.net/kann-t438680.html
Bin ich noch am Lesen und verstehen wollen.
Hast du es verstanden?
Das was ich aktuell habe, legt dir ne Datei mit „A“ an 1:15
Option Explicit
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function WriteFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, ByRef lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const GENERIC\_WRITE As Long = &H40000000
Private Const GENERIC\_READ As Long = &H80000000
Private Const FILE\_SHARE\_READ As Long = &H1
Private Const FILE\_SHARE\_WRITE As Long = &H2
Private Const OPEN\_ALWAYS As Long = 4
Private Const INVALID\_HANDLE\_VALUE As Long = -1
Private Sub Command1\_Click()
Dim hFile As Long, retVal As Long, BytesWritten As Long, I As Byte
Dim TextToWrite As String
TextToWrite = String(2147483648# / 15, "A")
hFile = CreateFile("C:\Gross2.txt", GENERIC\_WRITE, FILE\_SHARE\_READ Or FILE\_SHARE\_WRITE, ByVal 0&, OPEN\_ALWAYS, 0&, 0&:wink:
If hFile = INVALID\_HANDLE\_VALUE Then
Call MsgBox("Es ist ein Fehler beim Aufruf an CreateFile aufgetreten.")
Exit Sub
End If
For I = 1 To 15
retVal = WriteFile(hFile, ByVal TextToWrite, Len(TextToWrite), BytesWritten, 0&:wink:
If retVal = 0 Then
Call MsgBox("Es ist ein Fehler beim Aufruf an WriteFile aufgetreten.")
Exit For
End If
Next
Call CloseHandle(hFile)
MsgBox "Fertsch..."
End Sub
Gruß
Reinhard
MfG Alex