Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

 {Precision : 1 - до целых, 10 - до десятых, 100 - до сотых...}

var

 ScaledFractPart, Temp : Double;

begin

 ScaledFractPart := Frac(X)*Precision;

 Temp := Frac(ScaledFractPart);

 ScaledFractPart := Int(ScaledFractPart);

 if Temp >= 0.5 then ScaledFractPart := ScaledFractPart + 1;

 if Temp <= -0.5 then ScaledFractPart := ScaledFractPart - 1;

 RoundEx := Int(X) + ScaledFractPart/Precision;

end;

Разное

Генерация

еженедельных списков задач

Мне необходима программа, которая генерировала бы еженедельные списки задач. Программа должна просто показывать количество недель в списке задач и организовывать мероприятия, не совпадающие по времени. В моем текущем планировщике у меня имеется 12 групп и планы на 11 недель.

Мне нужен простой алгоритм, чтобы решить эту проблему. Какие идеи? 

Вот рабочий код (но вы должны просто понять алгоритм работы):

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm)

 ListBox1: TListBox;

 Edit1: TEdit;

 Button1: TButton;

 procedure Button1Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

const maxTeams = 100;

var

Teams: Array[1..maxTeams] of integer;

 nTeams, ix, week, savix: integer;

function WriteBox(week: integer): string;

var

str: string;

 ix: integer;

begin

Result := Format('Неделя=%d ',[week]);

 for ix := 1 to nTeams do begin

if odd(ix) then Result := Result+' '

else Result := Result+'v';

Result := Result+IntToStr(Teams[ix]);

 end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

nTeams := StrToInt(Edit1.Text);

 if Odd(nTeams) then inc(nTeams); {должны
иметь номера каждой группы}

 ListBox1.Clear;

 for ix := 1 to nTeams do Teams[ix] := ix;

 ListBox1.Items.Add(WriteBox(1));

 for week := 2 to nTeams-1 do begin

Teams[1] := Teams[nTeams-1]; {используем Teams[1] в качестве временного хранилища}

for ix := nTeams downto 2 do if not Odd(ix) then begin

savix := Teams[ix];

Teams[ix] := Teams[1];

Teams[1] := savix;

end;

for ix := 3 to nTeams-1 do if Odd(ix) then begin

savix := Teams[ix];

Teams[ix] := Teams[1];

Teams[1] := savix;

end;

Teams[1] := 1; {восстанавливаем известное значение}

ListBox1.Items.Add(WriteBox(week));

 end;

end;

end.

Mike Orriss

Генерация случайного пароля

The_Sprite советует:

Вам понадобилось, чтобы Ваше приложение само создавало пароли ? Возможно данный способ Вам пригодится. Всё очень просто: пароль создаётся из символов, выбираемых случайным образом из таблицы.

Совместимость: Delphi 5.x (или выше)

Собственно сам исходничек: Пароль создаётся из символов, содержащихся в таблице.

Внимание: Длина пароля должна быть меньше, чем длина таблицы!

// запускаем генератор случайных чисел (только при старте приложения).

procedure TForm1.FormCreate(Sender: TObject);

begin

 Randomize;

end;

function RandomPwd(PWLen: integer): string;

 // таблица символов, используемых в пароле

const StrTable: string =

 '!#$%&/=?@<>|{[]}\*~+#;:.-_' +

Поделиться с друзьями: