Главная страница
    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.006 c
3-95253
Alenka
2002-07-09 10:31
2002.07.29
Запомнить значение в текущей ячейки


1-95431
victor-s72
2002-07-16 16:57
2002.07.29
TChart --> SaveToBitmapFile


3-95222
Tutov Roman
2002-07-08 11:25
2002.07.29
Помогите составить запрос ...


3-95194
AndruhaM
2002-07-05 18:34
2002.07.29
Как защитить табличку Paradox от копирования


1-95400
Балков Евгений
2002-07-16 10:53
2002.07.29
Как программно отследить перемещение окна





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский