Появилась проблемка перевода кода программы с си на delphi, а именно программа создания dll.
Для удобства разобью непонятные мне вопросы на пункты:
Мне интересно что означает и как это перевести на Delphi, желательно сразу привести аналог
1)
#pragma argsused
int WINAPI DllMain(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
2)
void* CALLING_CONV (*MemAlloc)(int size) = NULL;
__declspec(dllexport) int CALLING_CONV Initialize (void*, void* (CALLING_CONV *_MemAlloc)(int));
__declspec(dllexport) int CALLING_CONV ConnectToDB ();
__declspec(dllexport) int CALLING_CONV DisconnectFromDB ();
__declspec(dllexport) int CALLING_CONV GetAllVertices (LPVERTEX *lpVerts, ID_T id_parent);
__declspec(dllexport) int CALLING_CONV GetVertexParam (LPPARAM *lpParams, VERTEX vertex, TIMETYPE time_first, TIMETYPE time_last);
__declspec(dllexport) int CALLING_CONV GetSrcVertEdges (LPSRCVERTEDGE *lpsve, VERTEX vertex);
__declspec(dllexport) int CALLING_CONV GetDstVertEdgest (LPDSTVERTEDGE *lpdve, VERTEX vertex);
__declspec(dllexport) LPGRAPH CALLING_CONV GetAllGraphes (ID_T id_obj, int* graph_cnt);
__declspec(dllexport) ID_T CALLING_CONV SaveGraph (GRAPH graph);
__declspec(dllexport) ID_T CALLING_CONV SaveNode (ID_T id_graph, ID_T id_obj, char* node_name, RECT rc);
__declspec(dllexport) ID_T CALLING_CONV SaveLink (ID_T id_graph, ID_T id_obj, ID_T id_node1, ID_T id_node2, char* link_name);
__declspec(dllexport) int CALLING_CONV SaveAggregation (ID_T id_aggrnode, ID_T id_childnode);
__declspec(dllexport) int CALLING_CONV UpdateDB (int bCommit);
__declspec(dllexport) int CALLING_CONV DeleteGraph (ID_T id_graph);
__declspec(dllexport) LPGENODE CALLING_CONV LoadAllNodes (ID_T id_graph, int* node_cnt);
__declspec(dllexport) LPGELINK CALLING_CONV LoadAllLinks (ID_T id_graph, int* link_cnt);
__declspec(dllexport) ID_T CALLING_CONV SaveLG5Net (ID_T id_graph, char* lg5net_name, int lg5_level);
__declspec(dllexport) int CALLING_CONV SaveLG5NetItem (ID_T id_lg5net, ID_T id_node, int item_group);
__declspec(dllexport) LPLG5NET CALLING_CONV LoadLG5Net (ID_T id_graph, int* lg5net_cnt);
__declspec(dllexport) LPLG5NETITEM CALLING_CONV LoadLG5NetItem (ID_T id_lg5net, int* lg5netitem_cnt);
3)
Код
#define TRY_QUEREY_OPEN \
try\
{\
qry->Open();\
}\
catch (EOracleError& err)\
{\
MessageBox (GetActiveWindow(),\
AnsiString("Ошибка при работе с базой данных\n'" + err.Message + "'\n\nОбратитесь к администратору базы данных").c_str(),\
"Ошибка", MB_OK | MB_ICONERROR);\
return NULL;\
}
#define TRY_QUEREY_EXECUTE \
try\
{\
qry->Execute();\
}\
catch (EOracleError& err)\
{\
MessageBox (GetActiveWindow(),\
AnsiString("Ошибка при работе с базой данных\n'" + err.Message + "'\n\nОбратитесь к администратору базы данных").c_str(),\
"Ошибка", MB_OK | MB_ICONERROR);\
return NULL;\
}
Заранеее благодарю всех кто откликнулся на мой вопрос и принял участие.