Текущий архив: 2007.11.04;
Скачать: CL | DM;
Вниз
Указатели на структуры как аргументы функций (C++) Найти похожие ветки
← →
Джо © (2007-10-05 20:19) [0]Совсем забыл C++.<br/><br/>Есть ДЛЛ на Delphi.<br/>Экспортируется функция (вот обрезки):<br/><br/><code>type<br/>  TFol<span style="background-color: yellow">der</span> = packed record<br/>    Name: LPSTR;<br/>    ...   <br/>  end;<br/>  PFol<span style="background-color: yellow">der</span> = ^TFol<span style="background-color: yellow">der</span>;<br/><br/>function GetFirstFol<span style="background-color: yellow">der</span>(Handle: dword; var Fol<span style="background-color: yellow">der</span>: PFol<span style="background-color: yellow">der</span>):dword; stdcall;<br/>begin<br/>  GetMem (Fol<span style="background-color: yellow">der</span>, SizeOf(TFol<span style="background-color: yellow">der</span>));<br/>  // Далее выделяется память для PFol<span style="background-color: yellow">der</span>^.Name (GetMem)<br/>  // и туда копируется строка символов с завершающим нулем<br/>end;<br/></code><br/>(Никаких ShareMem).<br/><br/>Из программ на Делфи данная функция из DLL вызывается и работает корректно.<br/><br/>Надыть написать демо для С++.<br/><br/><code>typedef struct _FOL<span style="background-color: yellow">DER</span> {<br/>  LPSTR  Name;<br/>  ...<br/>} FOL<span style="background-color: yellow">DER</span>, *PFOL<span style="background-color: yellow">DER</span>;<br/><br/>typedef DWORD (WINAPI * GetFirstFol<span style="background-color: yellow">der</span>Proc) (DWORD Handle, PFOL<span style="background-color: yellow">DER</span> fol<span style="background-color: yellow">der</span>);<br/></code><br/><br/>Функцию загружаю динамически, все отлично.<br/>Теперь пытаюсь нечто такое:<br/><br/><code>  <br/>  FOL<span style="background-color: yellow">DER</span> fol<span style="background-color: yellow">der</span>;<br/>  res = GetFirstFol<span style="background-color: yellow">der</span>(MCoreHandle, &fol<span style="background-color: yellow">der</span>);<br/>  if (res == OMS_OK)<br/>  {<br/>    cout << fol<span style="background-color: yellow">der</span>.Name << endl;<br/>  }<br/></code><br/><br/>В полях fol<span style="background-color: yellow">der</span> — мусор.<br/><br/>Ткните носом.
← →
Джо © (2007-10-05 20:23) [1]Совсем я ошален.<br/>Там же указатель на указатель.<br/><br/>Спасибо, ветку можно закрывать :)
← →
Sergey Masloff (2007-10-05 20:32) [2]Джо ©   (05.10.07 20:23) [1] <br/>Вот только хотел... <br/>Хорошо завел привычку сперва до конца прочитать. <br/>;-)))
← →
Джо © (2007-10-05 20:42) [3]<i>> [2] Sergey Masloff   (05.10.07 20:32)<br/>> Джо ©   (05.10.07 20:23) [1] <br/>> Вот только хотел... <br/>> Хорошо завел привычку сперва до конца прочитать. <br/>> ;-)))<br/></i><br/><br/>:)<br/>Спасибо, совсем уже мозги перекрутились, ведь два часа (!) не мог понять, в чем дело, пока в форум не рискнул написать.
← →
J_f_S (2007-10-06 03:12) [4]<i><br/>> Спасибо, совсем уже мозги перекрутились, ведь два часа (!<br/>> ) не мог понять, в чем дело, пока в форум не рискнул написать.<br/>> <br/></i><br/>Попробовать рассказать другому об ошибке - хороший способ понять её причину самому.
← →
имя (2007-10-07 22:11) [5]<font color="red">Удалено модератором</font>
← →
имя (2007-10-07 22:25) [6]<font color="red">Удалено модератором</font>
Страницы: 1 вся ветка
Текущий архив: 2007.11.04;
Скачать: CL | DM;
Память: 0.77 MB
Время: 0.024 c