Наши адреса:
www.x-program.narod.ru(наш официальный сайт последнее обновление 29.10.2004) X-Program@narod. ru(наш Email
пишите нам чтобы Вы хотели увидеть в
нашей рассылке)
Здравствуйте уважаемые
читатели!
Вы, наверное, заметили. Что
наш сайт с каждым разом становится всё
хуже и хуже.
Поэтому мы даём вам шанс
проявить себя в разработке дизайна для
нашего сайта!
Если Вы согласились, то
читайте далее.
Отправьте нам все, что
сможете сделать, а именно: HTMLстраницы с красивым дизайном для
нашего сайта, разнообразные кнопки для
перехода по страницам, цветовые
подборки ч все, что сможете сделать.
Ответы присылайте на x-program@mail.ru
Заранее благодарны.
Сегодня в выпуске:
1-Как определить размер рабочего стола без ТaskBarа
2-Как программно заменить обои на рабочем столе 4
3-64-битное кодирование
4-Алгоритм подсчёта времени, которое ушло на какую-либо операцию
5-Фото приколы
Как определить размер рабочего стола без ТaskBarа
Воспользуйтесь функцией SystemParametersInfo(), переслав ей в качестве параметров - SPI_GETWORKAREA и адрес структуры типа TRect, куда будут передан полученный результат:
procedure TForm1.Button1Click(Sender: TObject);
var
r: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @r, 0);
Memo1.Lines.Add(IntToStr(r.Top));
Memo1.Lines.Add(IntToStr(r.Left));
Memo1.Lines.Add(IntToStr(r.Bottom));
Memo1.Lines.Add(IntToStr(r.Right));
end;
Как программно заменить обои на рабочем столе
procedure TForm1.FormCreate(Sender: TObject);
var
St : string;
begin
St := 'C:\MyWallPaper.Bmp';
SystemParametersInfo(SPI_SETDESKWALLPAPER,UINT(St), nil, SPIF_SENDCHANGE);
end;
64-битное кодирование
{ 64-битное декодирование файлов }
{ Arne de Bruijn }
uses dos;
var
Base64: array[43..122] of byte;
var
T: text;
Chars: set of char;
S: string;
K, I, J: word;
Buf: pointer;
DShift: integer;
F: file;
B, B1: byte;
Decode: array[0..63] of byte;
Shift2: byte;
Size, W: word;
begin
FillChar(Base64, SizeOf(Base64), 255);
J := 0;
for I := 65 to 90 do
begin
Base64[I] := J;
Inc(J);
end;
for I := 97 to 122 do
begin
Base64[I] := J;
Inc(J);
end;
for I := 48 to 57 do
begin
Base64[I] := J;
Inc(J);
end;
Base64[43] := J;
Inc(J);
Base64[47] := J;
Inc(J);
if ParamCount = 0 then
begin
WriteLn('UNBASE64 <mime-файл> [<выходной файл>]');
Halt(1);
end;
S := ParamStr(1);
assign(T, S);
GetMem(Buf, 32768);
SetTextBuf(T, Buf^, 32768);
{$I-}reset(T);
{$I+}
if IOResult <> 0 then
begin
WriteLn('Ошибка считывания ', S);
Halt(1);
end;
if ParamCount >= 2 then
S := ParamStr(2)
else
begin
write('Расположение:');
ReadLn(S);
end;
assign(F, S);
{$I-}rewrite(F, 1);
{$I+}
if IOResult <> 0 then
begin
WriteLn('Ошибка создания ', S);
Halt(1);
end;
while not eof(T) do
begin
ReadLn(T, S);
if (S <> '') and (pos(' ', S) = 0) and (S[1] >= #43) and (S[1] <= #122) and
(Base64[byte(S[1])] <> 255) then
begin
FillChar(Decode, SizeOf(Decode), 0);
DShift := 0;
J := 0;
Shift2 := 1;
Size := 255;
B := 0;
for I := 1 to Length(S) do
begin
case S[I] of
#43..#122: B1 := Base64[Ord(S[I])];
else
B1 := 255;
end;
if B1 = 255 then
if S[I] = '=' then
begin
B1 := 0;
if Size = 255 then
Size := J;
end
else
WriteLn('Ошибка символа:', S[I], ' (', Ord(S[I]), ')');
if DShift and 7 = 0 then
begin
Decode[J] := byte(B1 shl 2);
DShift := 2;
end
else
begin
Decode[J] := Decode[J] or Hi(word(B1) shl (DShift + 2));
Decode[J + 1] := Lo(word(B1) shl (DShift + 2));
Inc(J);
Inc(DShift, 2);
end;
end;
if Size = 255 then
Size := J;
BlockWrite(F, Decode, Size);
end;
end;
Close(F);
close(T);
end.
Алгоритм подсчёта времени, которое ушло на какую-либо операцию
var
OperBegin, OperEnd: TTimeStamp;
Total: LongWord;
begin
OperBegin := DateTimeToTimeStamp(Now); {запоминается момент начала операции}
{Здесь размещается код операции}
OperEnd := DateTimeToTimeStamp(Now); {запоминается момент окончания операции}
Total := OperEnd.Time - OperBegin.Time;
end;