MLINE( )-Funktion

Gibt eine bestimmte Zeile eines Memofeldes als Zeichenfolge zurück.

MLINE(MemoFieldName, nLineNumber [, nNumberOfCharacters])

Rückgabewerte

Zeichen

Parameter

  • MemoFieldName
    Gibt den Namen des Memofeldes an, aus dem MLINE( ) eine Zeile zurückgibt. Befindet sich das Memofeld in einer Tabelle, die nicht im aktuellen Arbeitsbereich geöffnet ist, geben Sie vor dem Memofeldnamen einen Punkt und den Alias der Tabelle an.

  • nLineNumber
    Gibt die Nummer der Zeile an, die aus dem Memofeld zurückgegeben werden soll. Ist nLineNumber negativ, 0 oder größer als die Anzahl der Zeilen im Memofeld, wird eine leere Zeichenfolge zurückgegeben.

  • nNumberOfCharacters
    Gibt die Anzahl der Zeichen vom Beginn des Memofeldes aus an, nach denen MLINE( ) die angegebene Zeile zurückgibt.

    Die Systemvariable _MLINE wird normalerweise für nNumberOfCharacters verwendet. _MLINE wird bei jedem Aufruf von MLINE( ) automatisch angepasst.

    Bei rekursiven Prozeduren, die Zeilen aus großen Memofeldern zurückgeben, ergibt sich das beste Leistungsverhalten, wenn für nNumberOfCharacters die Systemvariable _MLINE angegeben wird.

Hinweise

MLINE( ) trennt alle nachfolgenden Leerzeichen von der mit nLineNumber angegebenen Zeile ab.

Die Länge und Anzahl der Zeilen eines Memofeldes werden durch den aktuellen Wert von SET MEMOWIDTH bestimmt (die standardmäßige Zeilenlänge beträgt 50 Zeichen). Wird ein Wagenrücklauf aufgefunden, werden keine weiteren Zeichen zurückgegeben. Die aktuelle Einstellung für _WRAP bestimmt, wie die Zeile des Memofeldes angezeigt wird.

Wird in einem Memofeld nach einer Zeichenfolge gesucht, können Sie mit ATLINE( ) oder ATCLINE( ) die Nummer der Zeile ermitteln, in der die Zeichenfolge gefunden wurde. Verwenden Sie diese Zeilennummer in MLINE( ) zum Lesen des Inhalts der Zeile des Memofeldes.

Beispiel

Im folgenden Beispiel werden mit zwei Methoden Zeilen eines Memofeldes zurückgegeben. In zwei Schleifen werden mit MLINE( ) Zeilen aus dem Memofeld zurückgegeben. Bei der zweiten Schleife, in der in MLINE( ) die Systemvariable _MLINE verwendet, werden Sie ein deutlich besseres Leistungsverhalten bemerken.

CLEAR
SET TALK OFF
SET MEMOWIDTH TO 50
CLOSE DATABASES
CREATE TABLE tmemo (name c(10), notes m)
APPEND BLANK                  && Add a record
WAIT WINDOW 'Filling memo field - takes several seconds' NOWAIT

** Fill the memo field ** FOR gnOuterLoop = 1 TO 5 && loop 5 times FOR gnAlphabet = 65 TO 75 && letters A to H REPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ; + CHR(13) ADDITIVE NEXT NEXT

** Display all lines from the memo field **

STORE MEMLINES(notes) TO gnNumLines   && Number of lines in memo field
STORE SECONDS( ) TO gnBegin      && Beginning time
FOR gnCount = 1 TO gnNumLines   && Loop for # of lines in memo field
   ? MLINE(notes, gnCount)      && Display each line
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds'   && Total time

_** Preferable method using MLINE in MLINE( ) ** ** Display all lines from the memo field **

WAIT 'Press a key to see the preferred method' WINDOW
CLEAR
STORE 0 TO _MLINE             && Reset _MLINE to zero
STORE SECONDS( ) TO gnBegin      && Beginning time
FOR count = 1 TO gnNumLines      && Loop for # of lines in memo field
   ? MLINE(notes, 1, _MLINE)      && Display each line
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds'   && Total time
SET TALK ON
CLOSE DATABASES
ERASE tmemo.dbf
ERASE tmemo.fpt

Siehe auch

ALINES( )-Funktion | ATCLINE( ) | ATLINE( ) | COPY MEMO | MEMLINES( ) | _MLINE-Systemvariable | MODIFY MEMO | SET MEMOWIDTH | _WRAP