Advertisement
Riremito

Untitled

Sep 7th, 2014
556
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. void _stdcall Air::_CreateFormatString(char *_Output, char *_Format, DWORD *dwArgument){
  2.     int i, j, k, last = 0, iSize;
  3.     char temp[MaxString] = {0};
  4.     for(i=j=k=0; _Format[i]; i++){
  5.         if(_Format[i]=='%'){
  6.             memcpy(&_Output[last], temp, j);
  7.             last += j;
  8.             _Output[last] = 0;
  9.             ZeroMemory(temp, MaxString);
  10.             j=0;
  11.  
  12.             switch(_Format[i+1]){
  13.                 case 's'://String
  14.                     iSize = GetStringLength((char *)dwArgument[k]);
  15.                     memcpy(&_Output[last], (char *)dwArgument[k], iSize);
  16.                     last += iSize;
  17.                     break;
  18.  
  19.                 case 'd'://DWORD
  20.                     DWORDtoChar(temp, dwArgument[k]);
  21.                     iSize = GetStringLength(temp);
  22.                     memcpy(&_Output[last], temp, iSize);
  23.                     last += iSize;
  24.                     _Output[last] = 0;
  25.                     ZeroMemory(temp, MaxString);
  26.                     break;
  27.  
  28.                 case 'w'://WORD
  29.                     WORDtoChar(temp, dwArgument[k]);
  30.                     iSize = GetStringLength(temp);
  31.                     memcpy(&_Output[last], temp, iSize);
  32.                     last += iSize;
  33.                     _Output[last] = 0;
  34.                     ZeroMemory(temp, MaxString);
  35.                     break;
  36.  
  37.                 case 'b'://BYTE
  38.                     BYTEtoChar(temp, dwArgument[k]);
  39.                     iSize = GetStringLength(temp);
  40.                     memcpy(&_Output[last], temp, iSize);
  41.                     last += iSize;
  42.                     _Output[last] = 0;
  43.                     ZeroMemory(temp, MaxString);
  44.                     break;
  45.  
  46.                 case 'i'://int
  47.                     INTtoChar(temp, dwArgument[k]);
  48.                     iSize = GetStringLength(temp);
  49.                     memcpy(&_Output[last], temp, iSize);
  50.                     last += iSize;
  51.                     _Output[last] = 0;
  52.                     ZeroMemory(temp, MaxString);
  53.                     break;
  54.  
  55.                 case 'a':
  56.                     BYTEArraytoString(temp, dwArgument[k+1], (BYTE *)dwArgument[k]);
  57.                     iSize = dwArgument[k+1]*3-1;
  58.                     memcpy(&_Output[last], temp, iSize);
  59.                     last += dwArgument[k+1]*3-1;
  60.                     _Output[last] = 0;
  61.                     ZeroMemory(temp, MaxString);
  62.                     k++;
  63.                     break;
  64.  
  65.                 default:
  66.                     temp[j] = _Format[i];
  67.                     i--;
  68.                     j++;
  69.                     k--;
  70.                     break;
  71.             }
  72.             i++;
  73.             k++;
  74.         }
  75.         else{
  76.             temp[j] = _Format[i];
  77.             j++;
  78.         }
  79.     }
  80.     iSize = GetStringLength(temp);
  81.     memcpy(&_Output[last], temp, iSize);
  82.     last += iSize;
  83.     _Output[last] = 0;
  84.     ZeroMemory(temp, MaxString);
  85. }
  86.  
  87. void _stdcall Air::CreateFormatString(char *_Output, char *_Format, ...){
  88.     _CreateFormatString(_Output, _Format, (DWORD *)(&_Format+1));
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement