OberonCore
https://forum.oberoncore.ru/

Facepalm
https://forum.oberoncore.ru/viewtopic.php?f=27&t=2543
Страница 1 из 1

Автор:  Александр Ильин [ Пятница, 09 Апрель, 2010 12:59 ]
Заголовок сообщения:  Facepalm

http://lurkmore.ru/Facepalm
Код:
   LOOP
      IF (tmp = NIL) OR (w.lastLineY > w.client.wy) THEN
         IF last # NIL THEN last.next := NIL END;
         WHILE tmp # NIL DO tmp.Dispose; tmp := tmp.next END;
         IF ~before OR (li = NIL) THEN EXIT END;
         tmp := w.firstLine; w.firstLine := li; li.next := tmp; w.highlight := li;
         li.ItemExtent (li.height); DEC (d, li.height);
         w.Validate (li); InitScan; prev := NIL; chg := TRUE;
      ELSE
         oldSz := tmp.height; tmp.ItemExtent (tmp.height); INC (w.lastLineY, tmp.height);
         IF oldSz # tmp.height THEN
            tmp.Update
         END;
         IF tmp = li THEN before := FALSE; bot := w.lastLineY; w.highlight := li END;
         last := tmp; tmp := tmp.next;
      END; (* if last line *)
   END; (* loop *)

Автор:  Александр Ильин [ Понедельник, 12 Апрель, 2010 06:31 ]
Заголовок сообщения:  Re: Facepalm

viewtopic.php?p=45845#p45845

Автор:  Александр Ильин [ Понедельник, 12 Апрель, 2010 06:56 ]
Заголовок сообщения:  Re: Facepalm

Сравним:
Код:
li := w.firstLine;
LOOP
   IF li = NIL THEN EXIT ELSIF y1 + li.height >= y THEN RETURN TRUE END;
   INC (y1, li.height); li := li.next;
END;
RETURN FALSE
Код:
li := w.firstLine;
WHILE (li # NIL) & ~(y1 + li.height >= y) DO
   INC (y1, li.height); li := li.next;
END;
RETURN li # NIL

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/