[Allegro] Datenbank-Problem

Bernhard Eversberg b-eversberg at gmx.de
Di Nov 29 13:56:26 CET 2016



> Gesendet: Dienstag, 29. November 2016 um 13:06 Uhr
> Von: "Fischer, Thomas" <fischer at sub.uni-goettingen.de>
> > 
> > Dann ist es kein Absturz, das Programm braucht wegen der furchtbar vielen Nullen nur sehr lange, den Satz einzulesen.
> 
> Nein, das Programm meldet "A99 kann nicht mehr ausgeführt werden" und man kann es dann entweder schließen oder auf Microsofts Fehlerbehandlung hoffen. Das nenne ich eine Absturz.
> 
Da haben Sie wohl recht, aber das hatten Sie nicht so dargestellt.

> > KEINESFALLS dann die Nullen mit einem Editor rausnehmen! Die Positionen der nachfolgenden Sätze
> > würden dann nicht mehr stimmen.
> 
> Das stimmt wohl, aber würde das durch den Neuaufbau der Satztabelle nicht behoben?
> 
Ja. Für jemand wie Sie, der die Dinge durchschaut, ist das legitim, ich will das aber nicht ganz allgemein so empfehlen.
Wer mit Texteditoren, besonders imm Hex-Betrieb, nicht so vertraut ist, sollte da die Finger von lassen.

> > 
> > Kleine Nachfrage: Wie groß ist die Datei?
> 
> Die Datei war "voll": 16.000.370 Bytes, die nächste Datei jfm_16.gld schon angefangen.
> Nach der Bereinigung noch 14.211.419 Bytes.
> 
Aha. Dann hatte a99 als neue Speicherposition eine Zahl ermittelt, die ganz am maximal möglichen Ende der Datei lag.
Statt am tatsächlichen Ende. Die dafür zuständige C-Funktion fseek() ist aber dem Programmierer nicht
zugänglich. Ob sie einen Fehler meldet, wird zwar geprüft, hat sie aber demnach nicht getan.
Was ich noch nicht verstehe ist, daß dahinter dann noch ein Satz kam. Oder gar mehrere?
Um für solche Fälle etwas zu ermitteln, gibt es die FLEX-Funktion "set S1" Die öffnet eine 
Datei  DbNam.slo, also z.B. cat.slo, und schreibt da Meldungen rein, die sich auf Probleme 
beim Speichern beziehen, die normalerweise aber abgefangen werden. 
Berichet darüber war worden 2013 in anderem Zusammenhang:
http://sunny5.biblio.etc.tu-bs.de/pipermail/allegro/2013-February/036790.html
und dokumentiert ist es in  h xset, nur fand es leider keinen Niederschlag in einer Vb,
wie ich zu meinem Verdruß feststelle, aber in flex.vw unter "Special Logging". 

Kurz gesagt:
set S1
in Ihren _start.flx, und dann mal abwarten, ob erneut so eine Erscheinung vorkommt, dann
die Datei  DbName.slo  einsehen.

B.E.



Mehr Informationen über die Mailingliste Allegro