Problem:
Ich würde mögen, für Dateien mit einer bestimmten Erweiterung zu suchen, sie in einem Array zu speichern und auf dem Bildschirm für Benutzerauswahl anzuzeigen, die Visual Basic for MS-DOS-Version 1.0 und die MS-DOS-Interrupt-Routine verwendet. Ich habe ein Beispielprogramm geschrieben, das Funktions4e und 4F aufruft, um die gewünschten Dateien zu finden. Scheint, sie ordnungsgemäß zu funktionieren, wie der Flag in dem niedrigen Byte des Registers zurückgaben oder wenn die letzte Datei gefunden worden ist, dass AXES 0 für erfolgreiches einzelnes Such und 18 zeigt, wenn keine Dateien vorhanden sind. Ich kenne nicht, wie das DTA (Disk Transfer Address) gelesen wird, nachdem ich eine Datei erfolgreich finde, daher kann ich den Dateinamen für spätere Anzeige jedoch nicht speichern.
Antwort:
In QuickBasic für MS-DOS-Versionen 2.0, 2.01 und 3.0 können Sie MS-DOS Interrupts ausführen, indem Sie die externe Routine INT86 aufrufen. In dem Standard, Professional Editions of Visual Basic für MS-DOS Version 1.0 und QuickBasic für MS-DOS-Versionen 4.0, 4.00b 4.0 und 4.5 können Sie die externen Routinen INT86OLD, INT86XOLD, INTERRUPT und INTERRUPTX aufrufen.
Es ist schwierig, das aktuelle DTA eines Programms zu finden ( und sein Offset geändert werden, ohne Vorankündigung kann, ohne Hinweis) deshalb das Fragen von MS-DOS besser ist ( Sie via INT 21 funktionieren Sie 1A "Set DTA" Hexen ) das DTA an einem Speicherort neu zuordnen, über den Sie Kontrolle haben. Für die Anwendung, die angegeben wird, sollten Sie folgend versuchen:
| 1. | Führen Sie den MS-DOS-Funktion-DOS-Aufruf aus, die DTA-Adresse (Mov Funktion HEXEN-1A Interrupt) in einer Adresse einer Struktur in Ihrem Codebereich (bezeichnen (diese Möglichkeit) wo es gefunden wird Möglichkeit) zu ändern.
|
| 2. | Sie führen (Sie Unterbrechen Mov, Sie funktionieren Hexen-4E) "zuerst findet der Ihre" aus.
|
| 3. | Sie führen Ihre Schleife "der Continue-Dateisuche" (Sie Unterbrechen Mov, Sie funktionieren Hexen-4F) aus.
|
Innerhalb Ihrer Schleife überprüfen Sie möglicherweise Ihre Variable in der Struktur wie dem Wünschen. Das "Programmierreferenz" DOS-Microsoft MS-Handbuch enthält, wie die Struktur beispielhaft für das DTA in Assembler eingerichtet wird.
Das Buch "Advanced MS-DOS von Strahl Duncan (Microsoft Press 1986)" ist auch ein sehr hilfreicher Verweis, MS-DOS-Funktionsaufrufe zu verwenden.