- 1
- 2
- 3
- 4
- 5
- 6
FYears.Items.Clear;
for i := 10 downto 1 do
FYears.Items.Add(IntToStr(Year - i));
FYears.Items.Add(IntToStr(Year));
for i := 1 to 10 do
FYears.Items.Add(IntToStr(Year + i));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+144
FYears.Items.Clear;
for i := 10 downto 1 do
FYears.Items.Add(IntToStr(Year - i));
FYears.Items.Add(IntToStr(Year));
for i := 1 to 10 do
FYears.Items.Add(IntToStr(Year + i));
Заполнение итемов номерами лет
Сначала добавим 10 лет до даты Х
Потом дату Х
Потом 10 лет после даты Х
RAD Studio XE8 FMX.Calendar.Style.pas
+143
if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LocaleService)) then
S := LocaleService.GetLocaleFirstDayOfWeek
else
S := '6';
FFirstDayOfWeekNum := Ord(S.Chars[0]) - Ord('0');
{$IFDEF MACOS}
FFirstDayOfWeekNum:= Ord(S.Chars[0]) + Ord('0');
{$ENDIF}
{$IFDEF ANDROID}
FFirstDayOfWeekNum := FFirstDayOfWeekNum - MondayOffset;
{$ENDIF}
Это FireMonkey! FMX.Calendar.Style.pas! И это реально работает.
Главное, что всё очевидно.
+144
IntToStr(StrToInt(VarToStr()))
Сегодня пришла мадам и спросила почему это не работает. Сказали что бы так больше не ...кодила.
+98
flag:=true;
if keyList = nil then
begin
new(keyList);
new(keylist^.HisTerms);
new(keylist^.hisChapter);
keyList^.value:= HashFunction(edit1.Text);
keylist^.hisChapter^.number:=strtoint(edit2.Text);
keylist^.HisTerms^.TheTerm:=edit1.Text;
keylist^.HisTerms^.hisPage:=keylist^.hisChapter;
keylist^.HisTerms^.hisKey:=keylist^.value;
keylist^.hisChapter^.nextPage:=nil;
keylist^.HisTerms^.nextTerm:=nil;
memo1.Lines.Add(edit1.Text + ' (' + edit2.Text+')');
end
else
begin
keyTemp:=keylist;
temp:=HashFunction(edit1.Text);
if keytemp^.value = temp then
begin
termtemp:=keytemp^.HisTerms;
chaptertemp:=keytemp^.hisChapter;
while termtemp^.nextTerm<> nil do
termtemp:=termtemp^.nextTerm;
while chaptertemp^.nextPage<> nil do
chaptertemp:=chaptertemp^.nextPage;
new(termtemp^.nextTerm);
new(chaptertemp^.nextPage);
chaptertemp^.nextPage^.number:=strtoint(edit2.Text);
termtemp^.nextTerm^.TheTerm:=edit1.Text;
termtemp^.nextTerm^.nextTerm:=nil;
chaptertemp^.nextPage^.nextPage:=nil;
termtemp^.hisKey:=HashFunction(edit1.Text);
termtemp^.hisPage:=chaptertemp^.nextPage;
flag:=false;
end
else
keytemp:=keytemp^.NextKey;
if not(flag) then
begin
keytemp:=keylist;
while keytemp^.NextKey<>nil do
keytemp:=keytemp^.NextKey;
new(keytemp^.NextKey);
new(keytemp^.NextKey^.HisTerms);
new(keytemp^.NextKey^.hisChapter);
keytemp^.NextKey.value:=HashFunction(edit1.Text);
keytemp^.NextKey^.hisChapter^.nextPage:=nil;
keytemp^.NextKey^.HisTerms^.nextTerm:=nil;
keytemp^.NextKey^.hisChapter^.number:=strtoint(edit2.Text);
keytemp^.NextKey^.HisTerms^.TheTerm:=edit1.Text;
keytemp^.NextKey^.HisTerms^.hisPage:=keytemp^.NextKey^.hisChapter;
keytemp^.NextKey^.HisTerms^.hisKey:=HashFunction(edit1.Text);
end;
Создание хэш-таблицы терминов и добавление каждому термину под-термина.
+101
var
Excel: OleVariant;
Rows, Cols: integer;
WorkSheet: OleVariant;
DebugList: TStringList;
I, j, CSeek: integer;
R, ArrV: OleVariant;
ObjData: TDataContainer;
D: integer;
begin
{$IFDEF DEBUG}
DebugList := TStringList.Create;
{$ENDIF}
try
Excel := CreateOleObject('Excel.Application');
Excel.Visible := false;
Excel.Workbooks.Open[DocPath, 0, True];
WorkSheet := Excel.ActiveWorkbook.ActiveSheet;
R := Excel.Intersect(WorkSheet.UsedRange,
WorkSheet.UsedRange.Offset[14, 0]);
ArrV := R.Value;
Rows := VarArrayHighBound(ArrV, 1);
Cols := VarArrayHighBound(ArrV, 2);
{$IFDEF DEBUG}
DebugList.Add(Format('Количество ячеек в таблице = %d', [(Rows) * Cols]));
DebugList.Add(Format('Rows = %d, Cols = %d', [Rows, Cols]));
{$ENDIF}
CSeek := 0;
D := 1;
for I := 1 to Rows do
begin
if (CompareStr(Trim(VarToStr(ArrV[I, 1])), Trim('Итого')) = 0) then
Break;
if (CompareStr(Trim(VarToStr(ArrV[I, 1])),
Trim('отдел')) = 0) or
(CompareStr(Trim(VarToStr(ArrV[I, 1])), Trim('10.05')) = 0) or
(CompareStr(Trim(VarToStr(ArrV[I, 1])), Trim('10.06')) = 0) or
(CompareStr(Trim(VarToStr(ArrV[I, 1])), Trim('10.09')) = 0) then
begin
CSeek := I + 2;
Continue;
end;
if CSeek > I then
Continue;
for j := 1 to Cols do
begin
case j of
1:
begin
if VarToStr(ArrV[I, j]) <> '' then
begin
ObjData := TDataContainer.Create;
ObjData.Name := ArrV[I, j];
end;
end;
3:
begin
if VarToStr(ArrV[I, j]) <> '' then
ObjData.InventoryNumber := GetInventoryNumber(ArrV[I, j]);
end;
10:
begin
if (D mod 2 <> 0) then
begin
if VarToStr(ArrV[I, j]) <> '' then
ObjData.DataCount := ArrV[I, j];
end
else
ObjData.Cost := ArrV[I, j];
if (ObjData <> nil) and (ObjData.DataCount > 0) then
begin
FData.Add(ObjData);
DebugList.Add(ObjData.AsString);
end;
end;
end;
Inc(D);
end;
end;
{$IFDEF DEBUG}
DebugList.Add('Objects created: ' + IntToStr(FData.Count));
D:=1;
for ObjData in FData.Items.Values do
D := D + ObjData.DataCount;
DebugList.Add('Total objects count: ' + IntToStr(D));
DebugList.SaveToFile('C:\ExcelDebug.txt');
{$ENDIF}
finally
{$IFDEF DEBUG}
DebugList.Free;
{$ENDIF}
Excel.Quit;
end;
end;
При разборе выхлопа из 1С в Excel - excel и формат выгрузки сделали всё, чтобы я люто наговнокодил-(
+100
// функция создания случайного ключа для шифровки/дешивровки сообщения
function keyCreate(): string;
const
alf: string = 'abcdefjhijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ0123456789';
var
i, k: integer;
logName: string;
begin
logName := '';
for i := 0 to 15 do
begin
k := RandomRange(1, 62);
logName := logName + alf[k];
end;
Result := logname;
end;
Какой оригинальный подход.
+128
program st1r;
uses crt;
var
st:string;
n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,i:integer;
begin
clrscr;
n0:=0; n1:=0; n2:=0; n3:=0; n4:=0;
n5:=0; n6:=0; n7:=0; n8:=0; n9:=0;
Write('Введите строку, состоящую из цифр: ');
Readln (st);
for i:=1 to length (st) do
begin
if Pos('0',st[i])<>0 then n0:=n0+1;
if Pos('1',st[i])<>0 then n1:=n1+1;
if Pos('2',st[i])<>0 then n2:=n2+1;
if Pos('3',st[i])<>0 then n3:=n3+1;
if Pos('4',st[i])<>0 then n4:=n4+1;
if Pos('5',st[i])<>0 then n5:=n5+1;
if Pos('6',st[i])<>0 then n6:=n6+1;
if Pos('7',st[i])<>0 then n7:=n7+1;
if Pos('8',st[i])<>0 then n8:=n8+1;
if Pos('9',st[i])<>0 then n9:=n9+1;
end;
Writeln ('Количество вхождений в строку из цифр ',st);
Writeln ('0: ',n0);
Writeln ('1: ',n1);
Writeln ('2: ',n2);
Writeln ('3: ',n3);
Writeln ('4: ',n4);
Writeln ('5: ',n5);
Writeln ('6: ',n6);
Writeln ('7: ',n7);
Writeln ('8: ',n8);
Writeln ('9: ',n9);
readln(st);
end.
студенту было дано задание: "Для каждой цифры '0', '1', ... '9' подсчитать количество их вхождений в строку S".
+98
// Функция шифрования
function encryptAecMessage(): string;
var
// myCript: TSyna3Des;
tmpKey: string;
//encryptingStr: string;
aProcess: TProcess;
pubKeyPath: string;
begin
tmpKey := keyCreate();
pubKeyPath := ExtractFileDir(ParamStr(0)) + '/workinkey/key2_rsa.pub';
// myCript := TSyna3Des.Create(tmpKey);
//encryptingStr := myCript.EncryptCTR(msg);
aProcess := TProcess.Create(nil);
// openssl rsautl -in /home/maksim/test -out /home/maksim/Загрузки/Keys -inkey /home/maksim/key2_rsa.pub
AProcess.CommandLine := 'echo ' + tmpKey +
' | openssl rsautl -in /home/maksim/test -out ' +
'/home/maksim/Загрузки/Keys -inkey ' + pubKeyPath + ' -pubin -encrypt';
Result := '';
end;
Вот такое кусок отборного кала нашёл в старой версии игрового сервера-)
+93
function THero.getMinimalJsonData():SOString;
begin
Result := '{"username":"'+name+
'","userid":'+IntToStr(id)+
',"level":'+IntToStr(general.level)+
',"creditstate":'+IntToStr(TTransfer.calcCreditState(general.creditPoints,general.level,general.creditFine))+
',"sign":"'+addiction.GetS('sign')+'"}';
end;
Использовать готовый класс? Не только в строку руками, только хардкор.
+92
var
HTML: TStringList;
HTTP: THTTPSend;
begin
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV4.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV5.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV6.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV7.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV8.exe'), SW_HIDE);
WinExec(PANsiChar('TASKKILL /F /IM HttpAnalyzerStdV9.exe'), SW_HIDE);
if FLogin.sEdit1.Text = '' then
raise Exception.Create('Ошибка авторизации, введенные данные не найдены!');
if FLogin.sEdit2.Text = '' then
raise Exception.Create('Ошибка авторизации, введенные данные не найдены!');
if FLogin.sEdit3.Text = '' then
raise Exception.Create('Ошибка авторизации, введенные данные не найдены!');
HTML := TStringList.Create;
HTTP := THTTPSend.Create;
HTTP.Protocol := '1.1';
HTTP.Headers.Add('Accept: application/json, text/javascript, */*; q=0.0');
HTTP.Headers.Add('X-Requested-With: XMLHttpRequest');
HTTP.MimeType := 'application/x-www-form-urlencoded; charset=UTF-8';
HTTP.UserAgent := 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)';
if HTTP.HTTPMethod('Post', 'http://{тут_мог_быть_ваш_адресс}/testlicfile/Perm_License.txt') then
begin
HTML.LoadFromStream(HTTP.Document);
if Pos((FLogin.sEdit1.Text + '_' + FLogin.sEdit2.text + '_' + FLogin.sEdit3.text + '_READY'), HTML.text) <> 0 then
begin
IniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'ArcheAge.ini');
IniFile.WriteString('LOGIN', 'SKYPE', FLogin.sEdit1.Text);
IniFile.WriteString('LOGIN', 'HWID', FLogin.sEdit2.Text);
IniFile.WriteString('LOGIN', 'KEYPS', FLogin.sEdit3.Text);
IniFile.Free;
Form2.Caption := 'Информация - [Лицензия: ' + FLogin.sEdit1.Text + ']';
Form1.Show;
FLogin.AlphaBlend := True;
FLogin.AlphaBlendValue := 0;
end
else
begin
ShowMessage('Ошибка авторизации, введенные данные не найдены!');
end;
HTML.Free;
HTTP.Free;
end;
end;
Узрел тут такой шедевр на одном из форумов. Типа защита от взлома:)