Subversion Repositories Kolibri OS

Rev

Rev 7878 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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