И что именно неправильно с ключом таблицы файлов? Насколько я вижу, дата и время сортируются. Протестировано в Nav 2015.
В любом случае, если вы действительно хотите это сделать с помощью .net, вот пример. Базовая таблица: File
. Страница собственности SourceTableTemporary = Yes
. После того, как вы получите всю информацию о файле в arrey, вы можете использовать ее и отсортировать по своему усмотрению. Или вы можете заполнить таблицу thetemporary файл со значениями из массива и использовать setcurrentkey
LOL
di DotNet System.IO.DirectoryInfo.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
fi DotNet System.IO.FileSystemInfo.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
arr DotNet System.Array.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
i Integer
di := di.DirectoryInfo('c:\Temp\Tmp');
//arr.CreateInstance(GETDOTNETTYPE(fi),1); //not needed
arr := di.GetFileSystemInfos();
for i := 0 to arr.Length-1 do
begin
fi := arr.GetValue(i);
Name := fi.Name;
evaluate(Date, format(fi.LastWriteTime,8,1));
insert;
end;
Или вы могли бы даже sort список файлов с .Net
di DotNet System.IO.DirectoryInfo.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
fi DotNet System.IO.FileSystemInfo.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
arr DotNet System.Array.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
arrKey DotNet System.Array.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
i Integer
TYPE DotNet System.Type.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
MethodInfo DotNet System.Reflection.MethodInfo.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Parameters DotNet System.Array.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Object DotNet System.Object.'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
di := di.DirectoryInfo('c:\Temp\Tmp');
arr := di.GetFileSystemInfos();
fi := arr.GetValue(0);
arrKey := arrKey.CreateInstance(GETDOTNETTYPE(fi.LastWriteTime), arr.Length);
FOR i := 0 TO arr.Length-1 DO
BEGIN
fi := arr.GetValue(i);
arrKey.SetValue(fi.LastWriteTime, i);
END;
TYPE := GETDOTNETTYPE(arr);
MethodInfo := TYPE.GetMethods().GetValue(80);
Parameters := Parameters.CreateInstance(GETDOTNETTYPE(Object),2);
Parameters.SetValue(arrKey,0);
Parameters.SetValue(arr,1);
MethodInfo.Invoke(TYPE, Parameters);
FOR i := 0 TO arr.Length-1 DO
BEGIN
fi := arr.GetValue(i);
MESSAGE(FORMAT(fi.LastWriteTime()));
END;
вау @uncommonsense свой ник макияж sense now =) –
hi @uncommonsense, это то, что я и сделал. Благодаря! – azatoth