Subversion Repositories Kolibri OS

Rev

Rev 7878 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. void Sort_by_Size(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
  3. {                                        
  4.         int j;
  5.         int iss = a;
  6.         int size1, size2;
  7.         if (a >= b) return;
  8.         size2 = items.get(b)*304 + buf+64;
  9.         for (j = a; j <= b; j++) {
  10.                 size1 = items.get(j)*304 + buf+64;
  11.                 if (ESDWORD[size1] <= ESDWORD[size2]) { items.swap(iss,j);  iss++;}
  12.         }
  13.         Sort_by_Size (a, iss-2);
  14.         Sort_by_Size (iss, b);
  15. }
  16.  
  17.  
  18. void Sort_by_Name(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
  19. {                                        
  20.         int j;
  21.         int isn = a;
  22.         dword name2 = items.get(b)*304 + buf+72;
  23.         if (a >= b) return;
  24.         for (j = a; j <= b; j++) {
  25.                 if (strcmpi(items.get(j)*304 + buf+72, name2)<=0) { items.swap(isn,j);  isn++;}
  26.         }
  27.         Sort_by_Name(a, isn-2);
  28.         Sort_by_Name(isn, b);
  29. }
  30.  
  31.        
  32. void Sort_by_Type(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
  33. {        
  34.         int j;      
  35.         dword filename1, filename2, ext1, ext2;
  36.         int n, isn = a;
  37.         if (a >= b) return;
  38.         filename2 = items.get(b)*304 + buf+72;
  39.         for (j = a; j <= b; j++)
  40.         {
  41.                 filename1 = items.get(j)*304 + buf+72;
  42.  
  43.                 n=strlen(filename1)-1;
  44.                 WHILE (n>0) && (ESBYTE[filename1+n]!='.') n--;
  45.                 if (n) ext1 = filename1+n+1; else ext1=0;
  46.                 n=strlen(filename2);
  47.                 n--;
  48.                 WHILE (n>0) && (ESBYTE[filename2+n]!='.') n--;
  49.                 if (n) ext2 = filename2+n+1; else ext2=0;
  50.  
  51.                 n=strcmp(ext1, ext2);
  52.                 if (n<0) { items.swap(isn, j); isn++;}
  53.                 if (!n) && (strcmp(filename1, filename2) <= 0) { items.swap(isn,j);  isn++;}
  54.         }
  55.         Sort_by_Type(a, isn-2);
  56.         Sort_by_Type(isn, b);
  57. }
  58.  
  59.