View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001745SAS.Планета[All Projects] Хотелкаpublic27-12-2012 09:0203-01-2013 05:47
ReporterTokarevVV 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version110418 
Target Version131111Fixed in Version131111 
Summary0001745: Добавить новые функции в PascalScript zmp
DescriptionНе плохо бы в Паскаль-скрипт добавить функции:

function Ceil(X :Extended) :Longint;
function Floor(X :Extended) :Longint;
function Log2(X :Extended) :Extended;
function Max(A, B :Integer) :Integer; overload;
function Max(A, B :Extended) :Extended; overload;
function Min(A, B :Integer) :Integer; overload;
function Min(A, B :Extended) :Extended; overload;

Это дало бы возможность улучшить и сократить скрипты считывания карт.

Пример 1:
Процедура, применённая в zoomify.zmp:

procedure GetMaxZoom();
var k, i :Longint;
begin
    k := m_nWidth;
    if m_nHeight > m_nWidth then k := m_nHeight;

    i := 0;
    while k > 256 do
    begin
        k := Trunc(k / 2);
        Inc(i);
    end;
    nMaxZoom := i;
end;

сократилась бы до:

procedure GetMaxZoom();
begin
    nMaxZoom := Ceil(Log2(Max(m_nWidth, m_nHeight)) - 8;
end;

Пример 2:
В zoomify.zmp:
Выражение Trunc(Ceil(X)) можно сократить до Ceil(X).
TagsPascalScript, zmp, паскальскрипт
Attached Files

- Relationships
related to 0001740resolvedTolik Доработка карты (ZMP) Ошибка в Zoomify.zmp 

-  Notes
(0010232)
TokarevVV (reporter)
27-12-2012 09:30

В примере 1 досадная ошибка. Надо:

procedure GetMaxZoom();
begin
    nMaxZoom := Ceil(Log2(Max(m_nWidth, m_nHeight)) - 8;
    if nMaxZoom < 0 then nMaxZoom := 0;
end;
(0010308)
zed (manager)
02-01-2013 18:44

К сожалению, перегруженных функций сделать не получится, поэтому пришлось слегка поменять имена. Теперь должны быть доступны функции:

function Ceil(const X: Extended): Integer;
function Floor(const X: Extended): Integer;
function Log2(const X: Extended): Extended;
function Max(const A, B: Integer): Integer;
function MaxExt(const A, B: Extended): Extended; // <-- (!)
function Min(const A, B: Integer): Integer;
function MinExt(const A, B: Extended): Extended; // <-- (!)

Проверяйте в завтрашней ночнушке.

- Users who viewed this issue
User List Anonymous (1287x), 0724 (1x)
Total Views 1288
Last View 21-01-2020 20:29

- Issue History
Date Modified Username Field Change
27-12-2012 09:02 TokarevVV New Issue
27-12-2012 09:30 TokarevVV Note Added: 0010232
27-12-2012 19:18 vdemidov Status new => confirmed
27-12-2012 19:18 vdemidov Product Version => 110418
27-12-2012 19:18 vdemidov Target Version => 22xxxx
27-12-2012 19:19 vdemidov Summary Новые функции Паскаль-скрипта => Добавить новые функции в PascalScript zmp
27-12-2012 19:19 vdemidov Tag Attached: паскальскрипт
27-12-2012 19:19 vdemidov Tag Attached: PascalScript
27-12-2012 19:19 vdemidov Tag Attached: zmp
02-01-2013 18:44 zed Note Added: 0010308
03-01-2013 05:47 vdemidov Status confirmed => resolved
03-01-2013 05:47 vdemidov Fixed in Version => 131111
03-01-2013 05:47 vdemidov Resolution open => fixed
03-01-2013 05:47 vdemidov Assigned To => vdemidov
03-01-2013 05:47 vdemidov Assigned To vdemidov => zed
03-01-2013 05:47 vdemidov Target Version 22xxxx => 131111
03-01-2013 09:52 zed Relationship added related to 0001740



Copyright © 2007 - 2020 SAS.Planet Team