Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевести код С++ в Delphi, Процедура 
:(
    Опции темы
maestro2k
Дата 6.1.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



Здравствуйте. Помогите резобратся с синтаксисом СИ. Ест код который складывает в памяти две нетипизированые структуры pitemiDList. Нужно реализовать на делфи.
Код

LPITEMIDLIST Append(LPCITEMIDLIST pidlBase, LPCITEMIDLIST pidlAdd)
{
    if(pidlBase == NULL)
        return NULL;
    if(pidlAdd == NULL)
        return (LPITEMIDLIST)pidlBase;
    
    LPITEMIDLIST pidlNew;

    UINT cb1 = GetSize(pidlBase) - sizeof(pidlBase->mkid.cb);
    UINT cb2 = GetSize(pidlAdd);

    pidlNew = (LPITEMIDLIST)pMalloc->Alloc(cb1 + cb2);
    if (pidlNew)
    {
        CopyMemory(pidlNew, pidlBase, cb1);
        CopyMemory(((LPSTR)pidlNew) + cb1, pidlAdd, cb2);
    }
    return pidlNew;
}



Это сообщение отредактировал(а) Snowy - 6.1.2007, 14:26
PM MAIL   Вверх
Alexeis
Дата 6.1.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Код

function Append(pidlBase : LPCITEMIDLIST;  pidlAdd : LPCITEMIDLIST) : LPITEMIDLIST;
var
   pidlNew : LPITEMIDLIST;
   cb1 : UINT;
   cb2 : UINT; 
Begin
  if pidlBase = nil
  then
    Begin
      Result := nil;
      exit
    end;

  if pidlAdd = nil
  then
    Begin
      Result := pidlBase;
      exit
    end;

    cb1 = GetSize(pidlBase) - sizeof(pidlBase.mkid.cb);
    cb2 = GetSize(pidlAdd);

    pidlNew = GetMem(cb1 + cb2);
    if pidlNew <> nil
    then
      Begin
          CopyMemory(pidlNew, pidlBase, cb1);
          CopyMemory((LPSTR(pidlNew)) + cb1, pidlAdd, cb2)
      end;
    Result := pidlNew;
end;


Это сообщение отредактировал(а) Alexeis - 6.1.2007, 15:31


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
maestro2k
Дата 15.1.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



Ошибка!  в функции GetMem(cb1 + cb2).
Параметры должны быть GetMem(P:Pointer; Size: integer);

Никак не могу разобраться как сложить эти пидлы...
PM MAIL   Вверх
Alexeis
Дата 15.1.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Ошибся чуток   smile 

Код

function Append(pidlBase : LPCITEMIDLIST;  pidlAdd : LPCITEMIDLIST) : LPITEMIDLIST;
var
   pidlNew : LPITEMIDLIST;
   cb1 : UINT;
   cb2 : UINT; 
Begin
  if pidlBase = nil
  then
    Begin
      Result := nil;
      exit
    end;
  if pidlAdd = nil
  then
    Begin
      Result := pidlBase;
      exit
    end;
    cb1 := GetSize(pidlBase) - sizeof(pidlBase.mkid.cb);
    cb2 := GetSize(pidlAdd);
    GetMem(pidlNew, cb1 + cb2);
    if pidlNew <> nil
    then
      Begin
          CopyMemory(pidlNew, pidlBase, cb1);
          CopyMemory(Pointer(integer(pidlNew) + cb1), pidlAdd, cb2)
      end;
    Result := pidlNew;
end;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
maestro2k
Дата 15.1.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



Alexeis респект!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.