Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt die Versatzposition des ersten Zeichens der angegebenen Zeile in der Datei im angegebenen Bearbeitungsfenster zurück.
EDPOS _EdGetLinePos(WHANDLE wh, EDLINE theLine)
WHANDLE wh; /* Handle of editing window. */
EDLINE theLine; /* Line number. */
Beispiel
Im folgenden Beispiel wird eine Bearbeitungssitzung für eine durch einen Parameter angegebene Datei geöffnet. Anschließend wird durch Aufrufen von _EdGetLinePos( ) die Position EDPOS für Zeile 12 ermittelt. Danach wird aufgrund dieser EDPOS _EdGetLineNum( ) aufgerufen; dabei wird 12 zurückgegeben. Anschließend wird EDPOS inkrementiert und _EdGetLineNum( ) so lange aufgerufen, bis sich der Wert EDLINE für die zurückgegebene Zeile ändert. An dieser Stelle wird _EdGetLinePos( ) für Zeile 13 aufgerufen.
Visual FoxPro-Code
SET LIBRARY TO EDGETLPO
= EDGETLPOS("x")
C-Code
#include <pro_ext.h>
void putLong(unsigned long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 6;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
EDPOS edpos;
EDLINE edlin, original;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
edpos = _EdGetLinePos(wh, 12);
_PutStr("\n_EdGetLinePos(wh, 12) =");
putLong(edpos);
original = edlin = _EdGetLineNum(wh, edpos);
for (;;)
{
_PutStr("\n_EdGetLineNum(wh,");
putLong(edpos);
_PutStr(") = ");
putLong(edlin);
if (edlin != original)
{
break;
}
edpos++;
edlin = _EdGetLineNum(wh, edpos);
}
edpos = _EdGetLinePos(wh, 13);
_PutStr("\n_EdGetLinePos(wh, 13) ="); putLong(edpos);
}
FoxInfo myFoxInfo[] = {
{"EDGETLPOS", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
Siehe auch
_EdGetLineNum( ), API-Bibliotheksroutine | _EdGetPos( ), API-Bibliotheksroutine | _EdGetChar( ), API-Bibliotheksroutine