Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

Delphi 5 и Delphi 6. Компиляция DLL   Найти похожие ветки 

 
EugeneP   (2002-07-18 11:56) [0]

Есть исходник dll ки
он написан для приложения на Delphi 5
компилю его в 5-ке - все нормально
компилю в 6- ке - ошибка при вызове

В чем разнинца может быть???

DLL использует компоненты IBX.

Что интересно у них даже размер разный получается.

Просто ставить 5-ку не хочется так как задача единственная.
Может настройки какие в проекте поменять???

Спасибо.


 
Digitman ©   (2002-07-18 12:03) [1]

Ошибка-то какая ? Конкретно ?


 
EugeneP   (2002-07-18 12:07) [2]

Access Violation XXX (адрес точно не помню могу уточнить)


 
Anatoly Podgoretsky ©   (2002-07-18 12:08) [3]

Ты не врешь насчет ошибки


 
EugeneP   (2002-07-18 12:09) [4]

Нет
причем размеры скомпиленных длл разные для 5 и 6 делфей


 
EugeneP   (2002-07-18 12:12) [5]

Кстати еще момент
длл использует компоненты IBX
может из за этого???


 
Skier ©   (2002-07-18 12:14) [6]

>EugeneP

А код, дружище ! :)
1) Объявление функции в DLL
2) Вызов функции из приложения (D6)


 
EugeneP   (2002-07-18 12:18) [7]

По поводу кода
сам код могу дать
а вот вызов к сожалению не из моей проги

вот код

library ext_confo;


uses
ShareMem,
SysUtils,
Windows,
Classes,
Dialogs,
IBDataBase,
IBQuery,
Forms;

{$R *.RES}


function ext_confo_dp // Внешняя функция, вызываемая при подтверждении сделки DEPO

(DB:TIBDataBase; {Компонент доступа в БД. Внимание! Данный компонент не надо открывать, закрывать и т.п.!!!}
AHandle : THandle; {Handle приложения}
ticket : double; {Номер Тикета}
tran : PChar;
r_ticket : PChar; {Номер Тикета REUTERS}
custid : PChar; {Уникальный идентификатор контрагента (таблица customer)}
custname : PChar; {Наименование контрагента }
ccy : PChar; {Валюта}
amount : double;
interest : double;
rate : double; {Курс}
acc_from : PChar; {Оплата со счета}
acc_to : PChar; {Получение на счет}
acc_from_n: PChar; {Номер ностро счета по балансу банка}
acc_to_n : PChar; {Номер ностро счета по балансу банка}
valuedate : TDateTime;{Дата покупки}
valuematurity : TDateTime; {Дата продажи}
tradedate : TDateTime; {Дата продажи}
roll_v_amount : double; {Сумма прологации по valuedate}
roll_m_amount : double; {Сумма прологации по maturity}
roll_v_ticket : double; {Тикет прологации по valuedate} //(-1 - нет тикета) (-2 - из нескольких)
roll_m_ticket : double; {Тикет прологации по maturity }
num_instr : integer; {номер платежной инструкции из таблицы t_cust_payinstr}
swift_confo :pchar {Подтверждение в формате SWIFT}

): integer; stdcall;
var IBQuery_TMP:TIBQuery;
IBTransaction_TMP:TIBTransaction;
begin
// C примером обращения к базе
result:=0;
Application.Handle:=AHandle;
IBTransaction_TMP:=TIBTransaction.Create(Application);
IBQuery_TMP:=TIBQuery.Create(Application);
try
IBTransaction_TMP.Params.Clear;
IBTransaction_TMP.Params.Add("isc_tpb_read_committed");
IBTransaction_TMP.Params.Add("isc_tpb_rec_version");
IBTransaction_TMP.Params.Add("isc_tpb_nowait");
IBTransaction_TMP.Params.Add("isc_tpb_read");
IBTransaction_TMP.DefaultDatabase:=DB;
IBTransaction_TMP.Active:=true;
IBQuery_TMP.DataBase:=DB;
IBQuery_TMP.Transaction:=IBTransaction_TMP;
IBQuery_TMP.SQL.Clear;
IBQuery_TMP.SQL.Add("select * from dp where ticket="+FloatToStr(ticket));
IBQuery_TMP.Open;
result:=0;
MessageDLG("Функция подтверждения DEPO. Для ее реализации обратитесь к Вашим программистам. Контрагент = "+PChar(IBQuery_TMP.FieldByName("custid").Asstring),mtWarning,[mbYes],0);
IBQuery_TMP.Close;
finally
IBQuery_TMP.Free;
IBTransaction_TMP.Free;
end;


//Следующие 2 строки не удалять!!! Они нужны для возврата фокуса приложению
Application.ProcessMessages;
Application.Handle:=0;

end;

function ext_confo_nett // Внешняя функция. вызываемая при печати тикета NETTING

(DB:TIBDataBase;
AHandle : THandle; {Handle приложения}
custid : PChar; {Уникальный идентификатор контрагента (таблица customer)}
custname : PChar; {Наименование контрагента }

// Параметры, относящиеся к сделкам
ticket_array : PChar; {Номер Тикета}
r_ticket_array : PChar; {Номер Тикета REUTERS}
note_array : PChar; {Список описаний сделок. Разделитель "|"}

// Параметры, относящиеся к платежам
p_amount_array : PChar; {Список результирующих сумм. Разделитель "|"}
p_amount_include_array : PChar; {Список сумм, вошедших в неттинг}
ccy_array : PChar; {Список результирующих валют. Разделитель "|"}
ccy_include_array : PChar; {Список валют, вошедших в неттинг (в соответствии с полем p_amount_include_array)}
acc_array : PChar; {Список идентификаторов ностро счетов. Разделитель "|"}
acc_name_array : PChar; {Список наименований ностро счетов. Разделитель "|"}
acc_n_array : PChar; {Список ностро счетов по балансу банка. Разделитель "|"}
payments_tickets : PChar; {Номер тикета нетинга}
p_date_array : PChar; {Список дат валютирования результирующих платежей}
swift_confo : pchar {Подтверждение в формате SWIFT}


): integer; stdcall;

begin
result:=0;
MessageDLG("Вызвана внешняя функция подтверждения тикета NETTING. Для ее реализации обратитесь к Вашим программистам",mtWarning,[mbYes],0);

//Следующие 2 строки не удалять. Они нужны для возврата фокуса приложению
Application.ProcessMessages;
Application.Handle:=0;

end;


exports ext_confo_dp;
end.


 
EugeneP   (2002-07-18 12:20) [8]

я немного подправил
там еще функции были
вызывается ext_confo_dp

на остальные тоже были експорты в конце
но я их сейчас убрал


 
Skier ©   (2002-07-18 12:36) [9]

>EugeneP
Я так понял что :
1) ты перекомпилил толко библиотеку (host не менялся)
2) ошибка возникает не в теле DLL-функции, а именно при
её вызове

Так ?


 
EugeneP   (2002-07-18 12:40) [10]

Да
хост не менялся

длл компилится нормально
а именно при вызове - ошибка


 
Skier ©   (2002-07-18 12:46) [11]

>EugeneP
Страшные вещи ! :)
Пойдём на ощупь...Попробуй отключить оптимизацию
и перекомпилить DLL. (у меня был случай когда это помогало,
правда это была D3, но попытаться можно.)


 
EugeneP   (2002-07-18 13:34) [12]

Не помогло отключение оптимизации :((



Страницы: 1 вся ветка

Текущий архив: 2002.07.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
3-95250
ioRaptor
2002-07-08 20:39
2002.07.29
Как занести jpeg картинку в blob поле (InterBase)


1-95303
sau
2002-07-17 14:23
2002.07.29
Макроподстановка


1-95316
KiKo
2002-07-17 17:02
2002.07.29
Измерение времени нажатия клавиши


3-95248
jen_bond
2002-07-07 17:35
2002.07.29
Обновление при запросе


1-95382
Fissher
2002-07-15 20:09
2002.07.29
Снова я со своим ComboBox-ом !!!