Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Из Delphi В С++, Помогите решить
 
Добрый день! Есть программка, для работы с ресурсами, написанная на Delphi. Мне необходимо переписать ее на язык С++. Помогите кто чем может :-)

Код
var 
ResHnd:THandle;
ResLoc:THandle;
ResSz:LongWord;
ResFl:Pointer;

buf:String;

...
ResLoc := FindResource(hInstance, PAnsiChar('test'), RT_STRING);
ResSz  := SizeofResource(hInstance, ResLoc);
ResHnd := LoadResource(hInstance, ResLoc);
ResFl  := LockResource(ResHnd);

SetLength(buf, ResSz);
MoveMemory(ResFl^, buf[1], Length(buf));

buf    := 'test'+buf;
GetMem(ResFl, Length(buf));
MoveMemory(buf[1], ResFl^, Length(Buffer));
FreeMem(ResFl);
Изменено: Юрий Стахорский - 04.07.2010 12:54:10
 
Ну хоть кто-нибудь ... хоть чем-нибудь :-)
 
Код
DWORD sizeOf =0;
HGLOBAL hSomeResource =NULL;
LPVOID  pvSomeResourceData = NULL;
HRSRC hResource = FindResourceA(GetModuleHandleA(NULL), "test", RT_STRING);
if (NULL == hResource)
{
  // TODO throw "cann't find resource"
}
else
{
  sizeOf = SizeofResource(GetModuleHandleA(NULL), hResource);
  hSomeResource = LoadResource(GetModuleHandleA(NULL), hResource);
  if ((hSomeResource) &&(sizeOf))
  {
    pvSomeResourceData = LockResource(hSomeResource);
    char *buf = malloc(sizeOf);
    if (!buf)
    {
       // todo throw "cann't allocate memory"
    }
    else 
    {
      unsigned long add_len = strlen("test");
      MoveMemory(pvSomeResourceData, buf, sizeOf);
      if ((sizeOf >= (sizeOf+add_len)) || (add_len >= (sizeOf+add_len)))
      {
    // todo throw "invalid internal params"
      }
      else
      {
        buf = realloc(buf, sizeOf + add_len);
   sprintf_s(buf,sizeOf+add_len,"%s","test");
   memcpy(buf+add_len, pvSomeResourceData, sizeOf);
   if (NULL!=(pvSomeResourceData = malloc(sizeOf + add_len)))
   {
      MoveMemory(buf, 
                      data_from_file, 
                      ((sizeOf + add_len)>=sizeof(Buffer)) ? sizeof(Buffer) : (sizeof+add_len));
      free(pvSomeResourceData);
        }
      }
    }
  }
}
Изменено: amisto0x07 - 29.06.2010 05:09:02
 
amisto0x07, большое спасибо за ответ! сегодня поковыряюсь!
Страницы: 1
Читают тему (гостей: 1)