Здравствуйте!
Появилась проблемка перевода кода программы с си на 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;\ }
Заранеее благодарю всех кто откликнулся на мой вопрос и принял участие.
Сообщение отредактировано: volvo - 7.11.2006 19:42