Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
3-95186
str
2002-07-05 13:48
2002.07.29
Использование *.xls в качестве БД


1-95355
EugeneP
2002-07-18 11:56
2002.07.29
Delphi 5 и Delphi 6. Компиляция DLL


14-95487
vads
2002-06-30 22:10
2002.07.29
Навеяно веткой


1-95366
neodiX
2002-07-15 19:38
2002.07.29
Active window


3-95230
grig
2002-07-08 15:51
2002.07.29
Узнать будущее значение AutoInc поля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский