Показать сообщение отдельно
Старый 23.02.2007, 13:06   #12  
VictorSH is offline
VictorSH
Участник
 
12 / 10 (1) +
Регистрация: 12.12.2005
После сообщения AndyD сделал то, что нужно было сделать с самого начала – посмотрел код по слоям. И обнаружил свинью, подложенную разработчиком.
Итак:

На SYS слое остался оригинальный код (до SP2)
client server static int getLastError()
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _getLastError = new DLLFunction(_winApiDLL, 'GetLastError');

_getLastError.returns(ExtTypes:Word);

return _getLastError.call();
}
На SYP слое SP2 благополучно исправил ошибку – мол между вызовом файловых функций (например копирование) и getLastError Аксапта вызвает ещё кучу всего и таким образом это значение сбивает. Во 2-м SP значение getLastError кэшируется.
client server static int getLastError()
{
// Syp Modifications - SP2 - BEGIN
// DLL _winApiDLL = new DLL('KERNEL32');
// DLLFunction _getLastError = new DLLFunction(_winApiDLL, 'GetLastError');
//
// _getLastError.returns(ExtTypes:Word);
//
// return _getLastError.call();
return DLL::lastDLLError();
// Syp Modifications - SP2 – END
}
Но на VAR слое наш разработчик ничтоже сумятише вернул в зад эти исправления по какой-то ему одному ведомой причине:
client server static int getLastError()
{
// вернул все назад. а токакой-то криворукий вызов метода класса DDL сделал, а сам метод создать звбыл. повбывав бы!

// Syp Modifications - SP2 - BEGIN
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _getLastError = new DLLFunction(_winApiDLL, 'GetLastError');

_getLastError.returns(ExtTypes:Word);

return _getLastError.call();
// return DLL::lastDLLError();
// Syp Modifications - SP2 - END
}

Вот так-то – удивительные рядом! Впредь буду изучать слой наших разработчиков прежде чем морочить голову отзывчивым людям из AxForum ) .