Artikel-ID: 42326 - Geändert am: Dienstag, 21. November 2006 - Version: 1.2

Falsche Beispiel in WB Advisor für CALL-INTERRUPT

Auf dieser Seite

Alles erweitern | Alles schließen

Zusammenfassung

Das Codebeispiel für CALL UNTERBRECHEN in der QuickBasic-Version 4,50 WB des Hypertext online-Hilfesystem falsche Beispiel ist, da er tatsächlich ein Codebeispiel für CALL INT86OLD und der INTERRUPT CALL Beispiel ist ist nicht vorhanden. Darüber hinaus benötigen zwei Fehler in diesem Beispiel CALL INT86OLD berichtigt. Arbeiten von CALL INT86OLD (korrigiert) und CALL UNTERBRECHEN Beispiele.

Weitere Informationen

Die folgenden zwei Fehler müssen in dem Beispiel INT86OLD CALL korrigiert werden, die der QuickBasic 4.50 WB Advisor "Hilfe: Call Interrupt Anweisung Programming Beispiel" stammt:

  1. Die folgende falsche Zeile
          $INCLUDE: 'QB.BI'    [Gives "Expected: Statement" error in QB.EXE.]
    						
    sollte wie folgt korrigiert:
          REM $INCLUDE: 'QB.BI'
    						
  2. Ändern Sie die folgende falsche Zeile:
          INARY%(DX) = SADD("NAME.TXT" + CHR$(0)) ["Expected: Variable" error.]
    						
    sollte in den folgenden beiden Zeilen geändert werden:
          a$ = "NAME.TXT" + CHR$(0)
          INARY%(DX) = SADD(a$)
    						
Das korrigierte CALL INT86OLD-Beispiel wird in Beispiel 1 unten gezeigt.

Die INTERRUPT-CALL-Anweisung ist in Beispiel 2 unten dargestellt. Ein Codebeispiel für CALL UNTERBRECHEN kann auch gefunden werden auf Seiten 74-76 des "Microsoft QuickBasic 4.5: Basic Language Reference,", die einzeln verkauft wird (Siehe die Karte Reihenfolge 4,50 Paket).

In den QBX.EXE Microsoft Advisor online (für Microsoft Basic PDS Versionen 7.00 und 7.10 für MS-DOS und MS OS/2), das CALL UNTERBRECHEN Codebeispiel werden korrekt angezeigt der "Hilfe: Interrupt Interruptx Routinen Programmierung Beispiel" Bildschirm (und das Beispiel ordnungsgemäß funktioniert).

Beachten Sie, dass die INT86OLD und INT86XOLD Routinen in alle gedruckt oder online-Dokumentation in Basic PDS 7.00 und 7.10, nicht dokumentiert sind, wie in einem separaten Artikel durch Abfragen mit der folgenden Wörter gefunden erläutert:
Hilfe und INT86OLD und docerr

Beispiel 1: CALL-INT86OLD Beispiel (korrigiert)

' Note:  To use CALL INTERRUPT, you must load the Quick library QB.LIB
'        with QuickBasic. The program also uses the QB.BI header file.

' Include header file for INT86OLD, etc.
REM $INCLUDE: 'QB.BI'  ' Added REM to correct "Expected: Statement" error

DIM INARY%(7), OUTARY%(7)         'Define input and output
              'arrays for INT86.
'
' Define register-array indices to
' make program easier to understand.
CONST AX = 0, BX = 1, CX = 2, DX = 3, bp = 4, si = 5, di = 6, FL = 7
'
INARY%(AX) = &H3C00               'DOS function to create a file.
INARY%(CX) = 0                    'DOS attribute for created file.
a$ = "NAME.TXT" + CHR$(0)   ' Added this line and modified next line to
INARY%(DX) = SADD(a$)      ' correct "Expected: Variable" error.
              'Pointer to file-name string
              'with zero byte termination.

CALL INT86OLD(&H21, INARY%(), OUTARY%())
              'Perform the creation.
'
INARY%(BX) = OUTARY%(AX)          'Move created file handle for write.
INARY%(AX) = &H4000               'DOS function to write to file.
TEXT$ = "hello, world" + CHR$(13) + CHR$(10)
              'Define text to write to file.
INARY%(CX) = LEN(TEXT$)           'Get length of text string.
INARY%(DX) = SADD(TEXT$)          'Get address of text string.
CALL INT86OLD(&H21, INARY%(), OUTARY%())
              'Perform the write.
'
INARY%(AX) = &H3E00               'DOS function to close a file.
CALL INT86OLD(&H21, INARY%(), OUTARY%())
              'Perform the close.
				

Beispiel 2: Aufrufen INTERRUPT-Beispiel (in der WB des 4.50 Hilfe nicht gefunden)

'This example uses the Interrupt routine to determine the current
'drive and the amount of free space remaining on the drive.

'Note: To use the Interrupt routine, you must load the Quick library
'QB.QLB using the /L switch when you begin QB. The following include
'file must also be present.

'$INCLUDE: 'QB.BI'

'Define registers.
DIM regs AS RegType

'Get current drive info; set up input and do system call.
regs.ax = &H1900
CALL INTERRUPT(&H21, regs, regs)

'Convert drive info to readable form.
Drive$ = CHR$((regs.ax AND &HFF) + 65) + ":"

'Get disk free space; set up input values and do system call.
regs.ax = &H3600
regs.dx = ASC(UCASE$(Drive$)) - 64
CALL INTERRUPT(&H21, regs, regs)

'Decipher the results.
SectorsInCluster = regs.ax
BytesInSector = regs.cx
IF regs.dx >= 0 THEN
   ClustersInDrive = regs.dx
ELSE
   ClustersInDrive = regs.dx + 65536
END IF
IF regs.bx >= 0 THEN
   ClustersAvailable = regs.bx
ELSE
   ClustersAvailable = regx.bx + 65536
END IF
Freespace = ClustersAvailable * SectorsInCluster * BytesInSector

'Report results.
CLS
PRINT "Drive "; Drive$; " has a total of";
PRINT USING "###,###,###"; Freespace;
PRINT " bytes remaining free."
				
Keywords: 
kbmt KB42326 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 42326  (http://support.microsoft.com/kb/42326/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Retired KB ArticleDisclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
 

SPRACHE AUSWÄHLEN