Version 11 (Geändert)
RECEIVE PACKET ({DokRef; }EmpfangeVar; StopChar | NumChars)
Parameter | Typ | Beschreibung | |
DokRef | DokRef | Referenznummer des Dokuments oder | |
aktueller Kanal (serielle Schnittstelle | |||
oder Dokument) | |||
EmpfangeVar | String Var | BLOB Var | Variable zum Empfangen des Textes | |
StopChar | NumChars | String | Numerisch | Zeichen, bis zu dem Daten empfangen | |
werden, oder Anzahl zu empfangender | |||
Zeichen |
Beschreibung
Der Befehl RECEIVE PACKET liest die Daten von der seriellen Schnittstelle oder von einem z.B. mit dem Befehl SET CHANNEL geöffneten Dokument.
Ist DokRef definiert, liest dieser Befehl Zeichen aus einem Dokument, das mit Open document, Create document oder Append document geöffnet wurde. Ist DokRef nicht definiert, liest dieser Befehl Zeichen aus einer seriellen Schnittstelle oder einem Dokument, das mit SET CHANNEL geöffnet wurde.
Die eingelesenen Zeichen werden, unabhängig von der Quelle, in EmpfangeVar zurückgegeben. Dies muss eine Variable von Typ Text, String oder BLOB sein. Wurden die Zeichen über den Befehl SEND PACKET gesendet, muss der Typ zu dem des gesendeten Pakets passen.
Hinweise:
Im ASCII Kompatiblitätsmodus lassen String Variablen bis zu 255 Zeichen zu und haben eine feste Größe, Textvariablen haben keine feste Größe und können bis zu 32.000 Zeichen akzeptieren.
Ist das empfangene Paket vom Typ BLOB, berücksichtigt er keine Zeichen, die über USE CHARACTER SET angegeben wurden. Das BLOB wird ohne Änderung gesendet.
Um eine bestimmte Anzahl Zeichen einzulesen, übergeben Sie diese Anzahl in NumChars. Ist die Variable EmpfangeVar vom Typ Text, können Sie in einem Aufruf bis zu 2 GB Text im Unicode Modus bzw. 32.000 Zeichen im ASCII Kompatibilitätsmodus einlesen. Im 2. Modus können Sie in NumChars die Konstante MAXTEXTLENBEFOREV11 angeben, um die max. Anzahl Zeichen festzulegen.
Um Zeichen bis zu einem bestimmten String einzulesen (bestehend aus ein oder mehreren Zeichen), übergeben Sie diesen String in StopChar. Er wird nicht in EmpfangeVar zurückgegeben.).
Wird der in StopString angegebene String nicht gefunden, gilt folgendes:
Beim Lesen eines Dokuments stoppt RECEIVE PACKET am Ende des Dokuments.
Beim Auslesen von Daten aus einer seriellen Schnittstelle wartet RECEIVE PACKET unendlich, bis ein Timeout eintritt oder bis der Benutzer den Empfang abbricht.
Eine serielle Datenübertragung können Sie unterbrechen:
Manuell durch gleichzeitiges Drücken der Strg-, Alt- und Umschalttaste bzw. auf Macintosh der Wahl-, Befehls- und Umschalttaste.
Automatisch mit dem Befehl SET TIMEOUT, der bei einer Zeitüberschreitung abbricht.
Die Unterbrechung generiert den Fehler -9994. Sie können ihn mit einer Methode ON ERR CALL abfangen. Eine Unterbrechung des Empfangs ist in der Regel nur bei der Kommunikation über eine serielle Schnittstelle erforderlich.
Beim Auslesen eines Dokuments beginnt das erste RECEIVE PACKET am Anfang des Dokuments auszulesen. Alle darauffolgenden Datenpakete beginnen mit dem Zeichen, das auf das zuletzt gelesene Zeichen folgt.
Hinweis: Sie können diesen Befehl verwenden für ein Dokument, das mit SET CHANNEL geöffnet wurde. Für ein Dokument, das mit Open document, Create document und Append document geöffnet wurde, können Sie mit den Befehlen Get document position und SET DOCUMENT POSITION die Position festlegen oder ändern, wo das nächste Auslesen (SEND PACKET) oder Einlesen (RECEIVE PACKET) stattfinden soll.
Versuchen Sie, über das Ende einer Datei hinaus zu lesen, gibt RECEIVE PACKET die gelesenen Daten bis zu diesem Punkt zurück und setzt die Systemvariable auf 1. Das nächste RECEIVE PACKET gibt eine leere Zeichenkette zurück und setzt die Systemvariable auf 0.
Hinweis: Verwenden Sie RECEIVE PACKET im ASCII- Kompatibilitätsmodus (Nicht-Unicode Modus), um Zeichen aus einem Windows Dokument zu lesen und wollen Windows Zeichen nicht über eine ASCII Tabelle in Mac OS Zeichen umwandeln, können Sie mit der Funktion Win to Mac arbeiten.
Beispiele
1. Folgendes Beispiel liest 20 Zeichen aus einer seriellen Schnittstelle in die Variable getTwenty:
RECEIVE PACKET (getTwenty; 20)
2. Folgendes Beispiel liest Daten aus dem in der Variablen myDoc zugewiesenen Dokument in die Variable vData. Ausgelesen wird bis zur Zeilenschaltung:
RECEIVE PACKET (myDoc;vData;Char (Carriage Return))
3. Folgendes Beispiel liest Daten aus dem in der Variablen myDoc zugewiesenen Dokument in die Variable vData. Ausgelesen wird bis zum HTML Tag </TD> (Ende der Tabellenzelle):
RECEIVE PACKET (myDoc;vData;"</TD>")
4. Folgendes Beispiel liest Daten von einem Dokument in Datenfelder. Die Daten werden in Datenfelder von fester Länge gespeichert. Die darin enthaltene Methode ruft eine Unterroutine auf, die schleifende Leerzeichen entfernt (Leerzeichen am Ende von Zeichenketten):
$vhDocRef := Open document ("";"TEXT") ` Öffne ein TEXT Dokument If (($Var1#"") | ($Var2#"")
) ` Wurde das Dokument geöffnet Repeat ` Durchlaufe bis keine Daten mehr da sind RECEIVE PACKET ($vhDocRef; $Var1; 15) ` Lies 15 Zeichen RECEIVE PACKET ($vhDocRef; $Var2; 15) ` Führe dasselbe für das zweite Feld durch If (OK = 1) ` Sind wir noch nicht am Ende des Dokuments CREATE RECORD([People]) ` Erstelle neuen Datensatz [People]First := Strip ($Var1) ` Sichere den ersten Namen [People]Last := Strip ($Var2) ` Sichere den letzten Namen SAVE RECORD([People]) ` Sichere den Datensatz End if Until (OK =0) CLOSE DOCUMENT ($vhDocRef) ` Schließe das Dokument End if
Nachfolgende Methode Strip entfernt die Leerzeichen am Ende der Daten:
For ($i; Length ($1); 1; -1) ` Durchlaufe vom Ende des Zeichensatzes bis zum Start If ($1[[$i]] # " ") ` Ist kein Leerzeichen vorhanden $i := -$i ` Beende die Schleife End if End for $0 := Delete string ($1; -$i; Length ($1)) ` Lösche die Leerzeichen
Referenz
Get document position, RECEIVE PACKET, SEND PACKET, SET DOCUMENT POSITION, SET TIMEOUT, USE CHARACTER SET.
Systemvariablen oder Mengen
Nach Aufrufen von RECEIVE PACKET hat die Systemvariable OK den Wert 1, wenn das Datenpaket ohne Fehler empfangen wurde. Wurde die Kommunikation unterbrochen oder trat ein Übertragungsfehler auf, ergibt OK den Wert 0.
Meetings, VCard Import Export, Virtual Structure 2, vCard Import Export