Seite 1 von 1
Binäre Datei einlesen + als Datei abspeichern = immer 0 Byte
Verfasst: 09.07.2006 18:34
von Delle
Hallo,
weiß jemand warum hier immer eine 0-Byte-Datei erzeugt wird?
In den Speicher wird alles korrekt eingelesen, das Erstellen der Datei funktioniert auch, allerdings werden keine Daten reingeschrieben .-(
Code: Alles auswählen
If ReadFile(0,"1.exe")
length=Lof()
*MemoryID=AllocateMemory(length)
bytes=ReadData(*MemoryID,length)
CloseFile(0)
EndIf
If CreateFile(0,"2.exe")
WriteData(PeekS(*MemoryID),length)
CloseFile(0)
EndIf
Verfasst: 09.07.2006 18:36
von DarkDragon
Code: Alles auswählen
If ReadFile(0,"1.exe")
length=Lof()
*MemoryID=AllocateMemory(length)
bytes=ReadData(*MemoryID,length)
CloseFile(0)
EndIf
If CreateFile(0,"2.exe")
WriteData(*MemoryID,length)
CloseFile(0)
EndIf
So vielleicht? Ohne PeekS, denn als Rückgabe bekommst du einen String und der endet mit einem 0-Byte.
Verfasst: 09.07.2006 19:41
von ts-soft
Wie Daniel bereits sagte, wollte nur hinzufügen, das jeder Allocierte Speicher zu prüfen ist !!!!
Ansonsten Invalid Memory Access
If *MemorID
; bla blub
endif
Nach Gebrauch freigeben halte ich für Sinnvoll, ist aber nicht unbedingt
erforderlich.
Verfasst: 10.07.2006 17:33
von DarkDragon
ts-soft hat geschrieben:Wie Daniel bereits sagte, wollte nur hinzufügen, das jeder Allocierte Speicher zu prüfen ist !!!!
Ansonsten Invalid Memory Access
If *MemorID
; bla blub
endif
Stimmt, aber wenn PeekS schon klappt, dann dürfte dort eigentlich nicht der Fehler liegen. Es gehört sich aber das zu prüfen.
Verfasst: 10.07.2006 23:03
von Falko
Sowas ähnliches hatte ich Jens schon mal gepostet
PB4: Binary write & read
@TS
Auch ich habe auf Memory jetzt nicht geprüft, was aber jeder selbst ändern kann, wenn er es für nötig hält
Grüße Falko
Verfasst: 10.07.2006 23:15
von ts-soft
Falko hat geschrieben:
@TS
Auch ich habe auf Memory jetzt nicht geprüft, was aber jeder selbst ändern kann, wenn er es für nötig hält
Grüße Falko
Und was ist das
Hat es nen besonderen Grund, das die Routine alles Byteweise macht, weil so
wie es da genutzt wird, wäre ReadData und WriteData ein vielfaches
schneller mit demselben Ergebnis.
Verfasst: 10.07.2006 23:21
von Falko
ts-soft hat geschrieben:Falko hat geschrieben:
@TS
Auch ich habe auf Memory jetzt nicht geprüft, was aber jeder selbst ändern kann, wenn er es für nötig hält
Grüße Falko
Und was ist das
Hat es nen besonderen Grund, das die Routine alles Byteweise macht, weil so
wie es da genutzt wird, wäre ReadData und WriteData ein vielfaches
schneller mit demselben Ergebnis.
Ich wusste, das du darauf antworten würdest.
>>If *Buffer ; habs auch nach langer Zeit nicht wieder angesehen
Sicher ist das Andere schneller. Vielleicht will man ja auch einzelne Bytes (Buchstaben, Zahlen) ändern. Dann ist es auch im Speicher praktisch.
Ist ja auch nur ein weiterer Tip. An einem Wettbewerb will ich mich absolut nicht beteiligen
Grüße Falko