Как поставить UIB?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как поставить UIB?

Сообщение EvgIq » 26.08.2008 15:31:09

Добрый день!

Скачал UIB21, не могу поставить...
Выдает ошибку:
uib_err.jpg


C Lazarus знаком плохо, только начинаю его использовать, но я подозреваю, что имеющийся у меня UIB21, надо как-то правильно по папкам разложить.
Имеющаяся структура папок в дистрибутиве такая:
UIB21_folder.jpg


Устанавливаю через "Пакет->открыть файл пакета(.lpk)", "c:\lazarus\UIB_\sourse\uiblaz.lpk", "Компиляция"
На этом месте стопуется все...

Lazarus v0.9.25beta
Windows Vista х32

Может кто подскажет, как правильно поставить?

Заранее благодарю...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
EvgIq
незнакомец
 
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55

Re: Как поставить UIB?

Сообщение alexs » 26.08.2008 15:58:18

там глючок есть
идёт вызов функци с не однозначным трактованием типов параметра функции - поэтому fpc и ругается
проще всего - поправь исходник - используй явное приведение типа.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Как поставить UIB?

Сообщение m_guest » 26.08.2008 16:19:37

В принципе, можно UIB из SVN поставить.
Адрес можно посмотреть здесь
Тоже вариант.
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: Как поставить UIB?

Сообщение EvgIq » 26.08.2008 16:47:00

alexs писал(а):там глючок есть
идёт вызов функци с не однозначным трактованием типов параметра функции - поэтому fpc и ругается
проще всего - поправь исходник - используй явное приведение типа.

Понимаю, что с вызывом перегруженной функции "EncodeTimeStamp(Value, PISCTimeStamp(sqldata));" проблема.
А что вместо нее написать?
Если можно подробнее, не очень я еще разбираюсь в этом :)
EvgIq
незнакомец
 
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55

Re: Как поставить UIB?

Сообщение Attid » 26.08.2008 17:27:15

Код: Выделить всё
SQL_TIMESTAMP : EncodeTimeStamp(integer(Value), PISCTimeStamp(sqldata));

я вот так написал =) вроде работает =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Как поставить UIB?

Сообщение EvgIq » 27.08.2008 09:46:54

to Attid

Там есть 3 описания этой процедуры:

Код: Выделить всё
procedure EncodeTimeStamp(const DateTime: TDateTime; v: PISCTimeStamp);
  begin
    v.timestamp_date := Round(int(DateTime)) + DateOffset;
    v.timestamp_time := ISC_TIME(Round(Frac(DateTime) * TimeCoeff));
  end;

  procedure EncodeTimeStamp(const Date: Integer; v: PISCTimeStamp);
  begin
    v.timestamp_date := Date + DateOffset;
    v.timestamp_time := 0;
  end;

  procedure EncodeTimeStamp(const Time: Cardinal; v: PISCTimeStamp);
  begin
    v.timestamp_date := DateOffset;
    v.timestamp_time := Time;
  end;   


Ты явно вызываешь вторую.
Компилятор то это съест, но будет ли это потом работать?
По идее надо точно идентифицировать тип первого параметра.
Т.е. если это TDateTime, то -- EncodeTimeStamp(DateTime(Value), PISCTimeStamp(sqldata));
если это Integer, то -- EncodeTimeStamp(integer(Value), PISCTimeStamp(sqldata)); // как ты и предлогаешь
если это Cardinal, то -- EncodeTimeStamp(cardinal(Value), PISCTimeStamp(sqldata));
По моему все эти типы определены в конечном счете как LongInt.
Тогда непонятно, почему надо было писать разные процедуры...
Короче, что-то я не догоняю :)
EvgIq
незнакомец
 
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55

Re: Как поставить UIB?

Сообщение alexs » 27.08.2008 10:16:27

Это Генри в UIB так придумал. Дельфя это хавает - а fpc более строг, ругается.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Как поставить UIB?

Сообщение Attid » 27.08.2008 10:43:27

ну какбы я глянул на название процедуры

Код: Выделить всё
  procedure TSQLDA.SetAsInt64(const Index: Word; const Value: Int64);


ну и подумал что пихать в SetAsInt64 что-то отличное от int как-бы не гламурно =) я бы не стал =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Как поставить UIB?

Сообщение EvgIq » 27.08.2008 10:59:32

Так выход то какой?
оставить --
Код: Выделить всё
SQL_TIMESTAMP : EncodeTimeStamp(integer(Value), PISCTimeStamp(sqldata));

Проблем потом в "птице2" не будет?
EvgIq
незнакомец
 
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55

Re: Как поставить UIB?

Сообщение Attid » 27.08.2008 16:18:05

EvgIq писал(а):Проблем потом в "птице2" не будет?

вот где где а в птице точно не будет =)

ну если не веришь логике сравни как в свн версии исправленно

Добавлено спустя 49 секунд:
ЗЫ строка 4613
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Как поставить UIB?

Сообщение EvgIq » 28.08.2008 11:38:17

Спасибо!!!
EvgIq
незнакомец
 
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 47

Рейтинг@Mail.ru