Gibt a zurück
numvar = PEEK([ datatype ,] address??? ) ansivar = PEEK$([STRINGZ,] address??? , count& ) widevar = PEEK$$([WSTRINGZ,] address??? , count& )
Gibt a zurück
Typ:Funktion |Kategorie: Memory & Pointers
PBXB64-Status:VERFÜGBAR
PBXB64-Zertifizierung: [ZERTIFIZIERT GETESTET]
Die PEEK-Funktionen und ergänzenden POKE-Anweisungen sind Low-Level-Methoden für den Zugriff auf einzelne Bytes im Speicher. Die Daten werden aus dem Speicher abgerufen, beginnend bei der angegebenen 32-Bit-Adresse??? .
PEEK ruft einen numerischen Wert ab einer angegebenen Speicheradresse ab.
PEEK$ ruft count& aufeinanderfolgende Bytes ab und gibt sie als String zurück. Wenn STRINGZ (oder ASCIIZ) angegeben ist, liest PEEK$ aufeinanderfolgende Zeichen bis zur angegebenen Größe aus dem Speicher, bis ein abschließendes $NUL ( CHR$ (0))-Byte gefunden wird. Da STRINGZ-Zeichenfolgen ein abschließendes $NUL enthalten müssen, beträgt die maximale Länge der zurückgegebenen Zeichenfolge 1 Zeichen weniger als count&.
PEEK$$ ruft die Anzahl aufeinanderfolgender 2-Byte-Zeichen ab und gibt sie als Breitzeichenfolge zurück. Wenn WSTRINGZ angegeben ist, liest PEEK$$ aufeinanderfolgende Zeichen bis zur angegebenen Größe aus dem Speicher, bis ein abschließendes $NUL (CHR$(0))-Zeichen gefunden wird. Da WSTRINGZ-Zeichenfolgen ein abschließendes $NUL enthalten müssen, beträgt die maximale Länge der zurückgegebenen Zeichenfolge 1 Zeichen weniger als count& .
Getesteter PBXB64-Umfang: examples/basic/test_peek_poke_string.pb validiert PEEK$(address, count) als exaktes Bytezaehlungs-Lesen, dessen Laenge auch bei eingebetteten NUL-Bytes erhalten bleibt. tests/pb/test_peek_poke_wide_string.pb validiert PEEK$$(address, count) als exaktes Lesen von UTF-16-Codeunits und PEEK$$(WSTRINGZ, address, count) als NUL-terminiertes Lesen. Die Beispiele sind in tests/validate.toml registriert und laufen in der pb_linkrun-Lane.
Im Gegensatz zu intuitiven Vorstellungen werden PEEK und POKE auf dem gleichen hohen Leistungsniveau ausgeführt wie Zeigervariablen. Sie bieten in vielen Situationen eine hervorragende Alternative zu Zeigern.
Datentyp
Der abzurufende numerische Datentyp, der einer von BYTE , WORD , DWORD , INTEGER , LONG , QUAD , SINGLE , DOUBLE , EXT , CUR , CUX sein kann. Wenn kein Datentyp angegeben ist, wird BYTE angenommen.
Adresse???
Eine gültige 32-Bit-Speicheradresse, die den Speicherort angibt, an dem der Datenabruf beginnen soll.
zählen&
Ein numerischer Ausdruck, der die Anzahl aufeinanderfolgender Zeichen angibt, die aus dem Speicher gelesen werden sollen.
Wenn Adresse??? (oder ein beliebiger Speicher im durch count& abgedeckten Bereich) auf eine ungültige Adresse verweist (Speicher, der der Anwendung nicht zugewiesen ist), generiert Windows eine allgemeine Schutzverletzung (GPF) und beendet die Anwendung. GPFs können nicht mit einem ON ERROR-Fehlerhandler abgefangen werden.
Diese Referenzseite soll durch ein fokussiertes Compile- oder Laufzeitbeispiel belegt sein. Das Beispiel soll Eingaben, erwartete Ausgabe oder Exit-Code und erforderliche Windows-Ressourcen oder Include-Dateien nennen.
Allgemeine Übersichtsseiten sollten trotzdem sagen, welche Familie gemeint ist, welche konkreten Befehlsseiten die Implementierung tragen und welche Formen nur der Navigation dienen. So bleibt die Seite detailliert genug, ohne so zu tun, als wäre sie eine vollständige Befehlsreferenz.
Referenz-Uebersichten sollen Umfang, Navigation, Build-Status und Beispielorte erklaeren. Eine vollständige Hilfeseite nennt außerdem Voraussetzungen, Grenzen, Fehlerfälle und die Beziehung zu verwandten Befehlen.
Validieren Sie die Beschreibung gegen den aktuellen PBXB64-Compiler, nicht nur gegen historische PowerBASIC-Dokumentation. Wenn ein Feature noch eingeschränkt ist, muss die Seite das offen sagen und darf keine nicht getestete Vollständigkeit behaupten.