Archive for the ‘для себя’ Category
Работа с датами
суббота, декабря 20, 2008День недели по дате
(
this code is generated by the algopascal translator
this code is distributed under the alglib license
(see http://www.alglib.net/copyrules.php for details)
uses math, ap;
function dayofweek(d : integer; m : integer; y : integer):integer;forward;
(
День недели по дате.
function dayofweek(d,m,y:integer):integer;
На входе:
дата - d (день), m (месяц), y (год).
На выходе:
номер дня недели.
Понедельник имеет номер 1,
Вторник номер 2, ...,
Воскресенье номер 7.
Как узнать пути к стандартным папкам (Delphi)
суббота, декабря 20, 2008В Windows есть специальная функция, позволяющая получить пути к стандартным папкам. В Delphi это будет выглядеть так:
uses ShlObj;
function GetSpecialPath(CSIDL: word): string;
var s: string;
begin
SetLength(s, MAX_PATH);
if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
then s := '';
result := PChar(s);
end;
Функции нужно передать id папки, путь которой хотим получить. Список id идёт далее.
Следует помнить, что не все id будуть работать в разных версиях Windows. Например папки 'Documents & Settungs' нет в 98-х и бессмысленно пытаться получить путь к ней.
Смысл данного поста скорее не в том, чтобы показать, как пользоваться функцией SHGetSpecialFolderPath, а, скорее, дать перечень CSIDL и описание к ним на русском.
(more...)
10 советов по улучшению дизайна
среда, декабря 17, 2008Алгоритмы шифрования MD5 и SHA1 в MS SQL Server 2005
пятница, декабря 12, 2008Все наверняка знают команду md5('строка') в MySQL - она удобна и полезна. Сегодня понадобилось сделать тоже самое в Microsoft SQL Server 2005, но он такой команды не знает. Погуглил, выяснилось, что для использования шифрования люди используют специальные DLL-ки. Какие нафиг DLL-ки! Поискав в MSDN, выяснил, что начиная с 2005 версии, шифрование встроено в SQL Server (кто бы сомневался).
Синтаксис:
HashBytes ( 'algorithm', { @input | 'input' } )
algorithm может принимать следующие значения: MD2 | MD4 | MD5 | SHA | SHA1
Пример:
DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HashBytes('SHA1', @HashThis);
GO
Что нового в Delphi 2007
среда, декабря 10, 2008Недавно отыскал видео, нашел много полезного:
Выполнение команд операционной системы в MS SQL
среда, декабря 3, 2008Репликация
среда, ноября 26, 2008http://msdn.microsoft.com/ru-ru/library/ms151198(SQL.90).aspx
Получение версии программы/библиотеки вида XX.XX
вторник, ноября 25, 2008Function GetFileVersion(Const FileName: String): String;
Type
TFileVersion = Packed Record
Case Integer Of
0: (Ver64: Int64);
1: (VerLS, VerMS: DWORD);
2: (Ver3, Ver2, Ver1, Ver0: Word);
3: (Build, Release, Minor, Major: Word);
End;
Var
VersInfo : Pointer;
VersInfoSize : DWORD;
FileVersion : TFileVersion;
w : DWORD;
FileInfo : PVSFixedFileInfo;
Begin
Result := '';
VersInfoSize := GetFileVersionInfoSize(PChar(FileName), W);
GetMem(VersInfo, VersInfoSize);
Try
If GetFileVersionInfo(PChar(FileName), 0, VersInfoSize, VersInfo) And
VerQueryValue(VersInfo, '\', Pointer(FileInfo), W) Then
Begin
FileVersion.VerMS := FileInfo.dwFileVersionMS;
FileVersion.VerLS := FileInfo.dwFileVersionLS;
Result := Int2Str(FileVersion.Major) + '.' + Int2Str(FileVersion.Minor);
End;
Finally
FreeMem(VersInfo);
End;
End;