Forum: Object-Pascal / Delphi-Language
Delphi
by FAlter,
14. Okt 2004
DumpFile :shock: Die Variable war in deinem Letzten Code noch gar nicht drin :(
Folgendes gilt, wenn es ein String ist, was ich vermute:
DestStream.Write(DumpFile,Length(Buffer));
1. Du solltest statt Length(Buffer) Length(DumpFile) verwenden, ich nehme an, dass die beiden unterschiedliche Größen haben wegen dem DumpFile:= FastReplace(Buffer,'\n', '', False);
2. Außerdem habe ich dir...
Forum: Object-Pascal / Delphi-Language
Delphi
by FAlter,
13. Okt 2004
Warum nimmst du nicht einfach Read oder Write oder ReadBuffer, WriteBuffer
PS: Ich sehe keinen Grund, hier etwas anderes als Read oder Write zu verwenden, außer, du willst es dir unnötig kompliziert machen.
Forum: Object-Pascal / Delphi-Language
Delphi
by FAlter,
13. Okt 2004
Ja, nach 4 Bytes ist Schluss, der String selbst ist nur ein Pointer (weshalb man ihn mit PChar typecasten kann). Du musst ab dem ersten Zeichen des Strings schreiben, also WriteBuffer(Buffer, Length(Buffer))
Forum: Object-Pascal / Delphi-Language
Delphi
by FAlter,
13. Okt 2004
Ich würde dann aber bei GetMem mehr nehmen (4096) als bei BlockSize (3072) und eben notfalls (ReAllocMem) Speicher nachladen, nicht immer.
Der Rückgabewert ist ein Integer, und zwar die Anzahl der tatsächlich gelesenen Bytes
Forum: Object-Pascal / Delphi-Language
Delphi
by FAlter,
13. Okt 2004
try
SrcStream:=TFileStream.Create(FileName,fmOpenread or fmShareDenyNone);
DestStream:=TFileStream.Create(FileName,fmCreate);
GetMem(Buffer, 1024);
try
while (SrcStream.Position < SrcStream.Size) do //was ist mit dem letzten Byte?
begin
if SrcStream.Size - SrcStream.Position > BlockSize then //Was ist BlockSize?
...