Forum: Algorithmen, Datenstrukturen und Klassendesign
by Schwedenbitter,
10. Sep 2012
Dann muss ich doch mal ausholen:
Mein Fileserver basiert auf openSUSE 11.4 mit Samba. Das Filesystem ist laut fsck in Ordnung. Die Dateien sind bemerkenswerter Weise auf nicht 0 Bytes groß. Dass wäre unter Linux ohne Verrenkungen ein Einzeiler mit dem schönen Befehlt grep.
Nach dem Crash haben die Dateien dieselbe Größe. Nur eben alles voller sinnloser Nullen. Den Code muss ich noch etwas...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Schwedenbitter,
10. Sep 2012
Das habe ich schon - in anderen Projekten. Ich schrieb ja nicht umsonst in meinem ersten Beitrag quick and dirty. Ich habe in Anbetracht der sich zerlegenden HDD meines Servers im Moment leider andere Probleme als schicken Code mit TFileStream & Co. zu erstellen.
Alles klar. Dann verstehe ich auch, warum meine anderen Codes mit BlockRead nie Probleme machten. Dort hatte ich - per Zufall...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Schwedenbitter,
10. Sep 2012
:dancer: ich habe den Fehler(?) soeben selbst gefunden!
Ich habe Reset(F); in Reset(F, 1); geändert. Jetzt hat Res die richtige Größe und meine Schleife rennt nicht mehr über das Ende hinaus.
Ich frage mich trotzdem, warum das so fatal ist. Lt. Hilfe wird ohne Angabe eine Blockgröße von 128 verwendet. Aber selbst wenn, dann wären 128 x 1024 lediglich 131.072 und nicht ca. 4 Mio...
Danke...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Schwedenbitter,
10. Sep 2012
Ich bin ein Stück weiter. Den Verursacher habe ich gefunden, nicht aber die Ursache. Der Code sieht modifiziert wie folgt aus:BlockRead(F, Buffer, SizeOf(Buffer), Res);
CloseFile(F);
If (Res > 0) Then
Begin
ShowMessage(SR.Name + #13 + 'Es wurden ' + FormatFloat('0,', Res) + ' Bytes gelesen.');
...
Das für mich verblüffende ist die MeldungUrlaub.xls
Es wurden 4.469.406 Bytes gelesen....
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Schwedenbitter,
10. Sep 2012
Danke für Eure Antworten!
Ich bekomme eine EAccessViolation in der Zeile mit If (Buffer <> 0) Then. Nicht mehr und nicht weniger. Warum ist mir völlig unklar. Dabei sieht die Deklaration wie folgt aus:Const
BuffSize = 1024;
Var
SR : TSearchRec;
F : File;
Buffer : Array Of Byte;
Res : Integer;
IsEmpty : Boolean;