Advertisement
Guest User

Untitled

a guest
May 19th, 2017
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.98 KB | None | 0 0
  1.  
  2. {$i evedit.pas}
  3.  
  4.  
  5. const
  6.       RegHistory: procedure(a1:string;a2:integer) = pointer($59BC44);
  7.  
  8.       sub_4CBA7C: procedure(a1,a2:pointer) = pointer($4CBA7C);
  9.       sub_4CBC48: procedure(a1:pointer;a2:integer) = pointer($4CBC48);
  10.       sub_5CE040: procedure(a1:pointer) = pointer($5CE040);
  11.       sub_5CE1AC: procedure(a1:pointer) = pointer($5CE1AC);
  12.       sub_4CB8B8: function(a1:pointer;a2:integer):integer = pointer($4CB8B8);
  13.       sub_53E0C8: function(a1,a2:integer):integer = pointer($53E0C8);
  14.       sub_5CDFF0: procedure(a1:pointer;a2:integer) = pointer($5CDFF0);
  15.       sub_536E1C: function(a1:pointer):integer = pointer($536E1C);
  16.  
  17. var
  18.  EE : ^TEventEditor;// = pointer ($5D1008);
  19.  FLvars : ^TFLVars;
  20.  
  21.  
  22. function sub_4CB8B8d(a1:integer;a2:integer):integer;
  23. begin
  24.   result := pInteger(a1 + 8)^ * a2 + pInteger(a1 + 4)^;
  25. end;
  26.  
  27. function sub_4CB8B8j(a1:pointer;a2:integer):pointer;
  28. var v1:integer;
  29. begin    v1:=integer(a1);
  30.   result := pointer(pInteger(v1 + 8)^ * a2 + pInteger(v1 + 4)^);
  31. end;
  32.  
  33.  
  34. procedure TFruityLoopsMainForm_EEPasteMenuClick;
  35.  
  36. type intArray = array[0..65535] of integer;
  37.  
  38. var
  39.   v1,v5,i,vi:integer;
  40.  
  41.   Buffer :PEEBuffer;
  42.   DataV2,DataV3 : PEEDATA;
  43.  
  44. begin
  45.   FLVars := pPointer( GetDataPTR($30) )^;
  46.   EE := FLVars.EE;
  47.  
  48.   if FLVars.Editor = EE.Editor then begin
  49.  
  50.   if (FLVars.Editor - 2) < 2  then begin
  51.         //зарегестрировать в историю отмены (undo hostory)
  52.         RegHistory('paste', EE.History);
  53.  
  54.     Buffer := EE.pBuffer;//Data,
  55.     DataV2 := pointer(Buffer.v_02C4);
  56.  
  57.  
  58.    // sub_5CE1AC( DataV2 );//удаление помеченых
  59.      vi := DataV2.len-1;//pInteger(v2 + 12)^;
  60.      if vi >= 0 then begin
  61.        for i:= 0 to vi  do begin
  62.         v1 := integer(sub_4CB8B8j(DataV2, i));
  63.         if  (pByte(v1 + 15)^ and $80) <> 0  then pInteger(v1+4)^ := -1;
  64.        end;
  65.         DataV2.Proc.v_000C(DataV2);
  66.     end;
  67.  
  68. //  sub_5CE040( DataV2 );//снять выделение
  69.  
  70.     // sub_5CE040d( v2 ); //снять выделение
  71.      vi := DataV2.len;//pInteger(v2 + 12)^;
  72.      if (vi - 1) >= 0 then begin
  73.        for i:= 0 to vi  do begin
  74.         v3 := sub_4CB8B8d(integer(DataV2), i);
  75.          pByte(v3 + 15)^ := pByte(v3 + 15)^ and $03F;
  76.        end;
  77.       DataV2.v_0030 := 0; //pInteger(v2 + 48)^ := 0;
  78.      end;  
  79.  
  80.  
  81.  
  82.     if FLVars.Editor = 3 then
  83.             DataV3 := FLVars.PLRecChannel  //v_1788
  84.           else
  85.             DataV3 := FLVars.NoteRecChannel;//PR_Clip;//v_1784;
  86.  
  87.    //   if FLVars.Editor = 2 then
  88.      //   sub_4CBC48(DataV3, Buffer.v_0274 shr 16);
  89.  
  90.  
  91.        vi := DataV3.len -1;/// pInteger(v3 + 12)^;// > 0
  92.       if vi >= 0 then begin
  93.  
  94. //   writeln (FLVars.Editor);
  95.       //if FLVars.Editor = 2 then sub_4CBC48(integer(DataV3), Buffer.v_0274 shr 16);
  96.  
  97.  
  98.       if FLVars.Editor = 2 then  begin   //
  99.        v5 :=  Buffer.v_0274  shr 16;
  100.        for i:=0 to vi do begin  //замена sub_4CBC48d
  101.         v1 := integer(sub_4CB8B8j(DataV3, i));
  102.         pWord(v1 + 6)^ := v5;
  103.         end;
  104.       end;
  105.  
  106.               //  pInteger(a1 + 8)^ * a2 + pInteger(a1 + 4)^;
  107.         v1 := pInteger(sub_4CB8B8(DataV3, 0))^;
  108.                                                    
  109.  
  110.           v5 := ee.ppq + ee.scpos - 1 - (ee.ppq + ee.scpos - 1) mod ee.ppq;
  111.  
  112.         //v5 := v1 mod ee.ppq + v5 - v1;
  113.         //v5 := pr.playpos - v4;
  114.  
  115.        // sub_4CBCA0d(v3, v4 mod a039C8[$0438 div 4] + v5 - v4);
  116.        for i:=0 to vi do begin  //установка временной позиции
  117.         v1 := sub_4CB8B8(DataV3, i);
  118.         pInteger(v1)^  := pInteger(v1)^ + v5;
  119.        end;
  120.  
  121.       //end;  
  122.       //sub_5CDFF0(DataV3, Buffer.v_0274); //обр. массива
  123.  
  124.  //if DataV3.len -1 >= 0 then sub_4CBA7C(DataV2, DataV3);
  125.       for i:=0 to vi do //Добавление в PR
  126.            DataV2.Proc.v_0004(DataV2, sub_4CB8B8j(DataV3, i));
  127.  
  128.     end;
  129.    
  130.       result := sub_536E1C(EE); //вызов класс.функций
  131.        
  132.    end;
  133.   end;
  134.  
  135. end;
  136.  
  137.  
  138. //{$i eeshift}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement