Вопрос о EditorConvertPos

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

Вопрос о EditorConvertPos

Post by Dark »

День добрый
Помогите разобраться

Code: Select all

  FarEditorInfo: TEditorInfo;
  FarEditorConvertPos: TEditorConvertPos;

  FARAPI.EditorControl(ECTL_GETINFO, @FarEditorInfo);
  FARAPI.EditorControl(ECTL_TABTOREAL, @FarEditorConvertPos);

  with FarEditorConvertPos do
  begin
     StringNumber := - 1;
     SrcPos := FarEditorInfo.CurPos;
     PosX := DestPos;
  end;
Почему DestPos = 0 ???

Что не так делаю?
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Вопрос о EditorConvertPos

Post by Shmuel »

Сначала надо инициализировать TEditorConvertPos, а потом уже вызывать ECTL_TABTOREAL. У тебя почему-то порядок обратный.
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

Re: Вопрос о EditorConvertPos

Post by Dark »

Shmuel wrote:Сначала надо инициализировать TEditorConvertPos, а потом уже вызывать ECTL_TABTOREAL. У тебя почему-то порядок обратный.
То есть, если я правильно понял, должно быть так:

Code: Select all

  FarEditorInfo: TEditorInfo;
  FarEditorConvertPos: TEditorConvertPos;

  FARAPI.EditorControl(ECTL_GETINFO, @FarEditorInfo);

  with FarEditorConvertPos do
  begin
     StringNumber := - 1;
     SrcPos := FarEditorInfo.CurPos;
  end;

  FARAPI.EditorControl(ECTL_TABTOREAL, @FarEditorConvertPos);
  PosX := FarEditorConvertPos.DestPos;
Правильно?
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Вопрос о EditorConvertPos

Post by Shmuel »

Да.
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

Re: Вопрос о EditorConvertPos

Post by Dark »

Да, тяжела и неказиста жизнь простого программиста

Спасибо!
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

Re: Вопрос о EditorConvertPos

Post by Dark »

Верно работает только в пределах WindowSizeX, так как не учитывает позицию левой границы окна редактора. Соответственно начинает смещать.
На мой взгляд, так правильнее:

Code: Select all

FARAPI.EditorControl(ECTL_GETINFO, @FarEditorInfo);

CurTabPos := FarEditorInfo.CurTabPos;
LeftPos := FarEditorInfo.LeftPos;

PosX := CurTabPos - LeftPos;
Post Reply

Return to “Разработка плагинов”