213 |
|
|
214 |
|
|
215 |
|
|
216 |
+ |
function CompareItems(List: TStringList; I1, I2: Integer): Integer; |
217 |
+ |
var |
218 |
+ |
s1, s2: String; |
219 |
+ |
begin |
220 |
+ |
s1 := MidStr(List[I1], 1, PosEx(';', List[I1], 6) - 1); |
221 |
+ |
s2 := MidStr(List[I2], 1, PosEx(';', List[I2], 6) - 1); |
222 |
+ |
Result := CompareStr(s1, s2); |
223 |
+ |
end; |
224 |
+ |
|
225 |
|
function TAccess_OUP_ADB.GetFilesList(ext: String; pattern: String; |
226 |
|
NoEmptyFiles: Boolean; SortType: TSortType): TStrings; |
227 |
|
var |
260 |
|
end; |
261 |
|
|
262 |
|
begin |
263 |
< |
if not (SortType in [ST_ExtNameAsc, ST_ExtNameDesc]) then |
264 |
< |
begin |
265 |
< |
list := TStringList.Create; |
263 |
> |
list := TStringList.Create; |
264 |
> |
if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then |
265 |
> |
list.Sorted := False |
266 |
> |
else |
267 |
|
list.Sorted := True; |
268 |
< |
for i := 0 to GetFileCount - 1 do |
268 |
> |
for i := 0 to GetFileCount - 1 do |
269 |
> |
begin |
270 |
> |
if ((Length(ext) = 0) or (Pos(Fdat_files[i].Extension, ext) > 0)) and |
271 |
> |
((Length(pattern) = 0) or |
272 |
> |
(Pos(UpperCase(pattern), UpperCase(Fdat_files[i].Name)) > 0)) then |
273 |
|
begin |
274 |
< |
if ((Length(ext) = 0) or (Pos(Fdat_files[i].Extension, ext) > 0)) and |
261 |
< |
((Length(pattern) = 0) or |
262 |
< |
(Pos(UpperCase(pattern), UpperCase(Fdat_files[i].Name)) > 0)) then |
274 |
> |
if (NoEmptyFiles = False) or ((Fdat_files[i].FileType and $02) = 0) then |
275 |
|
begin |
276 |
< |
if (NoEmptyFiles = False) or ((Fdat_files[i].FileType and $02) = 0) then |
277 |
< |
begin |
278 |
< |
id := FormatNumber(Fdat_files[i].ID, 5, '0'); |
279 |
< |
name := Fdat_files[i].Name; |
280 |
< |
extension := Fdat_files[i].Extension; |
281 |
< |
|
282 |
< |
case SortType of |
283 |
< |
ST_IDAsc, ST_IDDesc: list.Add(id + ';' + name + ';' + extension); |
284 |
< |
ST_NameAsc, ST_NameDesc: list.Add(name + ';' + id + ';' + extension); |
273 |
< |
ST_ExtAsc, ST_ExtDesc: list.Add(extension + ';' + id + ';' + name); |
274 |
< |
ST_ExtNameAsc, ST_ExtNameDesc: list.Add(extension + ';' + name + ';' + id); |
275 |
< |
end; |
276 |
> |
id := FormatNumber(Fdat_files[i].ID, 5, '0'); |
277 |
> |
name := Fdat_files[i].Name; |
278 |
> |
extension := Fdat_files[i].Extension; |
279 |
> |
|
280 |
> |
case SortType of |
281 |
> |
ST_IDAsc, ST_IDDesc: list.Add(id + ';' + name + ';' + extension); |
282 |
> |
ST_NameAsc, ST_NameDesc: list.Add(name + ';' + id + ';' + extension); |
283 |
> |
ST_ExtAsc, ST_ExtDesc: list.Add(extension + ';' + id + ';' + name); |
284 |
> |
ST_ExtNameAsc, ST_ExtNameDesc: list.Add(extension + ';' + name + ';' + id); |
285 |
|
end; |
286 |
|
end; |
287 |
|
end; |
288 |
< |
if not Assigned(Result) then |
289 |
< |
Result := TStringList.Create; |
290 |
< |
if list.Count > 0 then |
291 |
< |
begin |
292 |
< |
fields := TStringList.Create; |
293 |
< |
if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc, ST_ExtNameAsc] then |
285 |
< |
for i := 0 to list.Count - 1 do |
286 |
< |
begin |
287 |
< |
getfields; |
288 |
< |
Result.Add(id + '-' + name + '.' + extension); |
289 |
< |
end |
290 |
< |
else |
291 |
< |
for i := list.Count - 1 downto 0 do |
292 |
< |
begin |
293 |
< |
getfields; |
294 |
< |
Result.Add(id + '-' + name + '.' + extension); |
295 |
< |
end; |
296 |
< |
fields.Free; |
297 |
< |
end; |
298 |
< |
list.Free; |
299 |
< |
end |
300 |
< |
else |
288 |
> |
end; |
289 |
> |
if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then |
290 |
> |
list.CustomSort(CompareItems); |
291 |
> |
if not Assigned(Result) then |
292 |
> |
Result := TStringList.Create; |
293 |
> |
if list.Count > 0 then |
294 |
|
begin |
295 |
< |
FQuery.SQL.Text := 'SELECT id, name, extension FROM datfiles ' + |
296 |
< |
'WHERE Length(name) > 0 ORDER BY extension ASC, name ASC;'; |
297 |
< |
FQuery.Open; |
298 |
< |
if not Assigned(Result) then |
299 |
< |
Result := TStringList.Create; |
300 |
< |
if FQuery.RecordCount > 0 then |
301 |
< |
begin |
302 |
< |
FQuery.First; |
303 |
< |
repeat |
304 |
< |
name := FormatNumber(FQuery.FieldByName('id').AsInteger, 5, '0') + |
305 |
< |
'-' + FQuery.FieldByName('name').AsString + '.' + |
306 |
< |
FQuery.FieldByName('extension').AsString; |
307 |
< |
if SortType = ST_ExtNameAsc then |
308 |
< |
Result.Add(name) |
316 |
< |
else |
317 |
< |
Result.Insert(0, name); |
318 |
< |
FQuery.Next; |
319 |
< |
until FQuery.EOF; |
320 |
< |
end; |
321 |
< |
FQuery.Close; |
295 |
> |
fields := TStringList.Create; |
296 |
> |
if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc, ST_ExtNameAsc] then |
297 |
> |
for i := 0 to list.Count - 1 do |
298 |
> |
begin |
299 |
> |
getfields; |
300 |
> |
Result.Add(id + '-' + name + '.' + extension); |
301 |
> |
end |
302 |
> |
else |
303 |
> |
for i := list.Count - 1 downto 0 do |
304 |
> |
begin |
305 |
> |
getfields; |
306 |
> |
Result.Add(id + '-' + name + '.' + extension); |
307 |
> |
end; |
308 |
> |
fields.Free; |
309 |
|
end; |
310 |
+ |
list.Free; |
311 |
|
end; |
312 |
|
|
313 |
|
|