主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档: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;


使用
ShareMem,
SysUtils单元,
Windows中,
类,
对话框,
IBDataBase,
IBQuery,
表格;

{$ 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;
开始
// C примером обращения к базе
结果:= 0;
Application.Handle:= AHandle;
IBTransaction_TMP:=TIBTransaction.Create(Application);
IBQuery_TMP:=TIBQuery.Create(Application);
尝试
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;
结果:= 0;
MessageDLG("Функция подтверждения DEPO. Для ее реализации обратитесь к Вашим программистам. Контрагент = "+PChar(IBQuery_TMP.FieldByName("custid").Asstring),mtWarning,[mbYes],0);
IBQuery_TMP.Close;
最后
IBQuery_TMP.Free;
IBTransaction_TMP.Free;
结束;


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

结束;

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;

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

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

结束;


exports ext_confo_dp;
结束。



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.6 MB
时间:0.027 c
4-95621
Nubie
2002-05-21 02:59
2002.07.29
???运行程序???


3-95250
ioRaptor
2002-07-08 20:39
2002.07.29
如何将jpeg图像放入blob字段(InterBase)


14-95560
莱昂
2002-07-04 12:38
2002.07.29
扫描仪


1-95373
nikoss
2002-07-15 15:04
2002.07.29
调用程序时出错


4-95607
海克尔
2002-05-15 08:42
2002.07.29
绘制皮肤的机制?





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский