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

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

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

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

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

Сообщение EvgIq »

Добрый день!

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


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


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

Lazarus v0.9.25beta
Windows Vista х32

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

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

Сообщение alexs »

там глючок есть
идёт вызов функци с не однозначным трактованием типов параметра функции - поэтому fpc и ругается
проще всего - поправь исходник - используй явное приведение типа.
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

В принципе, можно UIB из SVN поставить.
Адрес можно посмотреть здесь
Тоже вариант.
EvgIq
незнакомец
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55

Сообщение EvgIq »

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

Понимаю, что с вызывом перегруженной функции "EncodeTimeStamp(Value, PISCTimeStamp(sqldata));" проблема.
А что вместо нее написать?
Если можно подробнее, не очень я еще разбираюсь в этом :)
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Код: Выделить всё

SQL_TIMESTAMP : EncodeTimeStamp(integer(Value), PISCTimeStamp(sqldata)); 

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

Сообщение EvgIq »

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.
Тогда непонятно, почему надо было писать разные процедуры...
Короче, что-то я не догоняю :)
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Это Генри в UIB так придумал. Дельфя это хавает - а fpc более строг, ругается.
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

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

Код: Выделить всё

  procedure TSQLDA.SetAsInt64(const Index: Word; const Value: Int64);


ну и подумал что пихать в SetAsInt64 что-то отличное от int как-бы не гламурно =) я бы не стал =)
EvgIq
незнакомец
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55

Сообщение EvgIq »

Так выход то какой?
оставить --

Код: Выделить всё

SQL_TIMESTAMP : EncodeTimeStamp(integer(Value), PISCTimeStamp(sqldata)); 

Проблем потом в "птице2" не будет?
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

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

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

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

Добавлено спустя 49 секунд:
ЗЫ строка 4613
EvgIq
незнакомец
Сообщения: 8
Зарегистрирован: 22.08.2008 15:20:55

Сообщение EvgIq »

Спасибо!!!
Ответить