Subversion Repositories Kolibri OS

Rev

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

Rev 976 Rev 984
Line 3... Line 3...
3
void Sort_by_Size(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
3
void Sort_by_Size(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
4
{                                        
4
{                                        
5
	int i= a;
5
	int i= a;
6
	IF (a >= b) return;
6
	IF (a >= b) return;
7
	FOR (j = a; j <= b; j++)
7
	FOR (j = a; j <= b; j++)
8
	{
-
 
9
		IF (ESDWORD[file_mas[j]*304 + buf+72-8] <= ESDWORD[file_mas[b]*304 + buf+72-8])
8
		IF (ESDWORD[file_mas[j]*304 + buf+64] <= ESDWORD[file_mas[b]*304 + buf+64])
10
		{ file_mas[i] >< file_mas[j];   i++;}
9
		{ file_mas[i] >< file_mas[j];   i++;}
11
	}
-
 
12
	Sort_by_Size (a, i-2);
10
	Sort_by_Size (a, i-2);
13
	Sort_by_Size (i, b);
11
	Sort_by_Size (i, b);
14
}
12
}
Line 23... Line 21...
23
	Sort_by_Name(a, i-2);
21
	Sort_by_Name(a, i-2);
24
	Sort_by_Name(i, b);
22
	Sort_by_Name(i, b);
25
}
23
}
Line 26... Line -...
26
 
-
 
27
 
-
 
28
/*int partition1(dword a, b) 
-
 
29
{
-
 
30
	dword i = a; byte filename1[256], filename2[256]; int n;
-
 
31
	for (j = a; j <= b; j++)
-
 
32
	{
-
 
33
	    //
-
 
34
		copystr(file_mas[j]*304 + buf+72, #filename1);
-
 
35
		copystr(file_mas[b]*304 + buf+72, #filename2);
-
 
36
		n=strlen(#filename1)-1;
-
 
37
		WHILE (filename1[n]<>'.') && (n>0) n--;
-
 
38
		IF (n) copystr(#filename1+n+1, #filename1);
-
 
39
		n=strlen(#filename2)-1;
-
 
40
		WHILE (filename2[n]<>'.') && (n>0) n--;
-
 
41
		IF (n) copystr(#filename2+n+1, #filename2);
-
 
42
		//
-
 
43
		n=strcmp(#filename1, #filename2);
24
 
44
		IF (n<0) { file_mas[i] >< file_mas[j];   i++;} 
-
 
45
		IF (n==0) && (strcmp(file_mas[j]*304 + buf+72, file_mas[b]*304 + buf+72)<=0) { file_mas[i] >< file_mas[j];   i++;}
-
 
46
	}
-
 
47
	EAX = i-1;
-
 
48
}*/
-
 
49
 
25
 
50
int partition1(dword a, b) 
26
void Sort_by_Type(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
51
{
27
{                                        
52
	dword i = a; byte filename1[256], filename2[256]; int n;
28
	int i=a; dword offset=buf+72;  byte filename1[256], filename2[256]; int n;
53
	dword offset=buf+72;
29
	IF (a >= b) return;
54
	for (j = a; j <= b; j++)
30
	for (j = a; j <= b; j++)
55
	{
31
	{
56
	    //
32
	    //
Line 65... Line 41...
65
		//
41
		//
66
		n=strcmp(#filename1, #filename2);
42
		n=strcmp(#filename1, #filename2);
67
		IF (n<0) { file_mas[i] >< file_mas[j];   i++;} 
43
		IF (n<0) { file_mas[i] >< file_mas[j];   i++;} 
68
		IF (n==0) && (strcmp(file_mas[j]*304 + offset, file_mas[b]*304 + offset)<=0) { file_mas[i] >< file_mas[j];   i++;}
44
		IF (n==0) && (strcmp(file_mas[j]*304 + offset, file_mas[b]*304 + offset)<=0) { file_mas[i] >< file_mas[j];   i++;}
69
	}
45
	}
70
	EAX = i-1;
46
	Sort_by_Type(a, i-2);
-
 
47
	Sort_by_Type(i, b);
71
}
48
}
Line 72... Line -...
72
 
-
 
73
void Sort_by_Type(dword a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
-
 
74
{                                        
-
 
75
	int c;
-
 
76
	IF (a >= b) RETURN;
-
 
77
	c = partition1(a, b);
-
 
78
	Sort_by_Type(a, c-1);
-
 
79
	Sort_by_Type(c+1, b);
-