Einzelnen Beitrag anzeigen
Alt 11.10.2015, 14:54   #1
leecher
Moderator
EXECUTE Funktion NTVDM crash

Hallo,

Nachdem im OA4-Handbuch nichts dazu vermerkt ist, möchte ich an dieser Stelle auf ein kleines Problem in OA im Zusammenhang mit der EXECUTE-Funktion hinweisen. Übergibt man einen String mit mehr als 126 Zeichen Länge an die Execute-Funktion, wie z.B. in folgendem Beispiel, so erhält man einen NTVDM-Crash (meist mit Invalid Opcode):

Code:
EXECUTE "echo This is a very very long environment string that will exceed the DOS environment string length and therefore crash NTVDM because it exceeds the 126 char limit"
Die Ursache hierfür liegt in diesem Fall an einer Limitierung des PSP von DOS, es gehen einfach nicht mehr als 126 Zeichen!
OA prüft das allerdings scheinbar nicht ab, bevor es den Aufruf ans DOS weitergibt (vermutlich via INT 2E) und daher schepperts dann.
Normalerweise patche ich Fehler ja, aber in diesem Fall ist es kein Fehler und es ist ausreichend, wenn man als Benutzer über die Limitierung bescheid weiß und entsprechend richtig programmiert. Möchte man mehr Daten an ein Programm übergeben, so kann man z.B. die Daten in einer Datei schreiben und dann eine externe Batch-Datei aufrufen, welche die Eingangsdaten verarbeitet.

Lg.
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	ntvdm.jpg‎
Hits:	6
Größe:	26.2 KB
ID:	600  
leecher ist offline   Mit Zitat antworten