?? unit1.pas
字號:
if listview3.Items[i].Caption = socket.RemoteAddress then
listview3.items[i].Delete;
If socket.RemoteAddress = IP Then begin
CloseSocket(Sock);
Form1.Status('Disconnected.');
Form1.Info('Server closed.');
Form1.Button1.Caption := '&Connect';
End;
end;
procedure TForm1.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
var
i:integer;
begin
errorcode := 0;
for i := 0 to listview3.Items.Count -1 do
if listview3.Items[i].Caption = socket.RemoteAddress then
listview3.items[i].Delete;
If socket.RemoteAddress = IP Then begin
CloseSocket(Sock);
Form1.Status('Disconnected.');
Form1.Info('Server closed.');
Form1.Button1.Caption := '&Connect';
End;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
begin
s := socket.ReceiveText;
If (S <> '') and (Pos(#13, S)=0) Then Exit;
If copy(s, pos(#13, s)+1, length(s)) <> '' then Begin
If (S <> '') and (Pos(#13, S)=0) Then Exit;
while s <>'' do begin
DoShit(copy(s, 1, pos(#13, s)-1), Socket.RemoteAddress);
s := copy(s, pos(#13, s)+1, length(s));
end
End else DoShit(S, Socket.RemoteAddress);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
F:TextFile;
l1,l2,t:string;
begin
If FileExists('Settings.cfg') Then Begin
AssignFile(F, 'Settings.cfg');
Reset(F);
Read(F, l1);
ReadLn(F, l2);
T := L1+#13;
While Not Eof(F) Do Begin
Read(F, l1);
ReadLn(F, l2);
T := T + L1+#13;
End;
CloseFile(F);
//pos, con, log, encrypu
If Pos('PORT',T)>0 Then Begin
Edit2.text := Copy(T, Pos('PORT', T)+5, 6);
Edit2.text := Copy(Edit2.text, 1, pos(#13, Edit2.text)-1);
End;
If Pos('IP',T)>0 Then Begin
Edit1.text := Copy(T, Pos('IP', T)+3, 15);
Edit1.text := Copy(Edit1.text, 1, pos(#13, Edit1.text)-1);
End;
If Pos('SAVE_POS',T)>0 Then
If Copy(T, Pos('SAVE_POS',T)+9, 1) = '1' Then
CheckBox4.Checked := True Else CheckBox4.Checked := False;
If Pos('SAVE_LOG',T)>0 Then
If Copy(T, Pos('SAVE_LOG',T)+9, 1) = '1' Then
CheckBox1.Checked := True Else CheckBox1.Checked := False;
If Pos('SAVE_CON',T)>0 Then
If Copy(T, Pos('SAVE_CON',T)+9, 1) = '1' Then
CheckBox3.Checked := True Else CheckBox3.Checked := False;
If Pos('ENCRYPT',T)>0 Then
If Copy(T, Pos('ENCRYPT',T)+8, 1) = '1' Then
CheckBox5.Checked := True Else CheckBox5.Checked := False;
End;
Info('Client started at '+DateToStr(Now));
Caption := 'Mental Rage 1.0';
Panel1.width := 293;
panel1.height := 193;
Form1.Height := 277;
Form1.Width := 393;
panel_about.visible := false;
panel_config.visible := false;
panel_find.visible := false;
panel_info.visible := false;
panel_sin.visible := false;
panel_status.visible := false;
panel_transfer.visible := false;
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
panel_info.Visible := False;
panel_config.Visible := False;
panel_transfer.Visible := False;
panel_status.Visible := False;
panel_find.Visible := False;
panel_sin.Visible := False;
panel_about.Visible := True;
panel_about.Align := AlClient;
end;
procedure TForm1.ConTimerTimer(Sender: TObject);
var
d,h,m,s:integer;
begin
d := strtoint(copy(panel7.Caption,1,2));
h := strtoint(copy(panel7.Caption,4,2));
m := strtoint(copy(panel7.Caption,7,2));
s := strtoint(copy(panel7.Caption,10,2));
inc(s);
if s = 60 then
inc(m);
if m = 60 then
inc(h);
if h = 24 then
inc(d);
if s = 60 then
s := 0;
if m = 60 then
m := 0;
if h = 24 then
h := 0;
panel7.caption := '';
If Length(inttostr(d)) = 1 then panel7.Caption := '0'+inttostr(d) else
panel7.Caption := inttostr(d);
panel7.Caption := panel7.Caption + ':';
If Length(inttostr(h)) = 1 then panel7.Caption := panel7.Caption + '0'+inttostr(h) else
panel7.Caption := panel7.Caption + inttostr(h);
panel7.Caption := panel7.Caption + ':';
If Length(inttostr(m)) = 1 then panel7.Caption := panel7.Caption + '0'+inttostr(m) else
panel7.Caption := panel7.Caption + inttostr(m);
panel7.Caption := panel7.Caption + ':';
If Length(inttostr(s)) = 1 then panel7.Caption := panel7.Caption + '0'+inttostr(s) else
panel7.Caption := panel7.Caption + inttostr(s);
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if (key = '\') or (key = ':') or
(key = '/') or (key = '*') or
(key = '?') or (key = '"') or
(key = '<') or (key = '>') or
(key = '|') Then
zeromemory(@key, sizeof(key));
end;
procedure TForm1.Button24Click(Sender: TObject);
begin
if CreateDirectory(pChar( ExtractFilePath(ParamStr(0))+Edit4.text ), NIL) then
Info('Done creating '+edit4.text+'\')
else
Info('Error creating '+edit4.text+'\');
end;
procedure Rece;
Var
F:String;
Begin
While Form1.StatusBar1.Panels[1].Text = 'Status : Connected.' Do Begin
If Recv(Sock, Buffer, SizeOf(Buffer), 0) < 1 Then Begin
CloseSocket(Sock);
Form1.Status('Disconnected.');
Form1.Info('Server closed.');
Form1.Button1.Caption := '&Connect';
Exit;
End Else Begin
F := Buffer;
If copy(F, pos(#13, F)+1, length(F)) <> '' then
while F <>'' do begin
Form1.DoShit(copy(F, 1, pos(#13, F)-1), '');
F := copy(F, pos(#13, F)+1, length(F));
end
else Form1.DoShit(F, '');
End;
ZeroMemory(@Buffer, SizeOf(Buffer));
End;
End;
Function TForm1.SendString(Str:String):Boolean;
Var
I:Integer;
f:textfile;
Begin
If Not SIN Then Begin
Result := False;
If Send(Sock, Str[1], Length(Str), 0) = ERROR_SUCCESS Then Result := True;
Panel5.Caption := IntToStr(StrToInt(Panel5.Caption)+Length(Str));
End Else Begin
If Not ServerSocket1.Active Then Exit;
For I := 0 To ServerSocket1.Socket.ActiveConnections-1 Do
If ServerSocket1.Socket.Connections[i].RemoteAddress = IP Then
ServerSocket1.Socket.Connections[i].SendText(Str);
End;
If Not CheckBox1.Checked Then Exit;
AssignFile(F, 'Log.txt');
If FileExists('Log.txt') Then
Append(F)
Else
ReWrite(F);
WriteLn(F, TimeToStr(Now)+' >> Client -> '+Str);
CloseFile(F);
End;
procedure TForm1.Button1Click(Sender: TObject);
var
A : Dword;
begin
SIN := False;
If Button1.Caption = '&Disconnect' Then Begin
CloseSocket(Sock);
Form1.Button1.Caption := '&Connect';
Exit;
End;
WSAStartUp(257,wsadatas);
Sock:=Socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
SockAddrIn.sin_family:=AF_INET;
SockAddrIn.sin_port:=htons(StrToInt(Edit2.text));
SockAddrIn.sin_addr.S_addr:=inet_addr(PChar(Edit1.text));
Info('Connecting to '+Edit1.text+':'+edit2.text);
Status('Connecting..');
If Connect(Sock,SockAddrIn,SizeOf(SockAddrIn)) = ERROR_SUCCESS Then Begin
Status('Connected.');
Info('Successfully connected to '+Edit1.text+':'+Edit2.text);
CreateThread(NIL, 0, @Rece, NIL, 0, A);
Button1.Caption := '&Disconnect';
SendString('101.0'#13'11win 2k'#13'1210mbit'#13);
End Else Begin
Status('Disconnected.');
Info('Could not connect to '+Edit1.text+':'+Edit2.text);
WSACleanup();
End;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
F:TextFile;
begin
CanClose := False;
If CheckBox2.Checked Then Begin
AssignFile(F, 'Settings.cfg');
ReWrite(F);
If CheckBox4.Checked then
WriteLn(F, 'SAVE_POS=1')
Else
WriteLn(F, 'SAVE_POS=0');
If Checkbox3.Checked Then
WriteLn(F, 'SAVE_CON=1')
Else
WriteLn(F, 'SAVE_CON=0');
If Checkbox1.Checked Then
WriteLn(F, 'SAVE_LOG=1')
Else
WriteLn(F, 'SAVE_LOG=0');
If Checkbox5.Checked Then
WriteLn(F, 'ENCRYPT=1')
Else
WriteLn(F, 'ENCRYPT=0');
If CheckBox3.Checked Then Begin
WriteLn(F, 'IP='+Edit1.text);
WriteLn(F, 'PORT='+Edit2.text);
End;
CloseFile(F);
End;
Info('------------'#13#10);
ServerSocket1.Active := False;
ExitProcess(0);
end;
procedure TForm1.ListView3DblClick(Sender: TObject);
begin
If ListView3.ItemIndex = -1 Then Exit;
SIN := True;
IP := ListView3.ItemFocused.Caption;
Button1.Caption := '&Disconnect';
Info('Connected to '+IP+' now');
Status('Connected.');
end;
procedure TForm1.Clear1Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Button21Click(Sender: TObject);
var
I:Integer;
begin
If ListView1.Items.Count <= 0 Then Exit;
SendString('37'#13);
For I := 0 To ListView1.Items.Count -1 do
If ListView1.Items[i].SubItems[0] = 'Sending' Then Begin
ListView1.Items[i].SubItems[0] := 'Incomplete';
End;
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
SendString('13'#13);
end;
procedure TForm1.Button17Click(Sender: TObject);
begin
SendString('16'#13);
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
SendString('14'#13);
end;
procedure TForm1.Button18Click(Sender: TObject);
begin
SendString('17'#13);
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
SendString('15'#13);
end;
procedure TForm1.Button19Click(Sender: TObject);
begin
SendString('18'#13);
end;
procedure TForm1.Button22Click(Sender: TObject);
var
I:Integer;
begin
If ListView1.Items.Count <= 0 Then Exit;
SendString('37'#13);
For I:=0 To ListView1.Items.Count -1 Do
ListView1.Items[i].SubItems[0] := 'Incomplete';
end;
procedure TForm1.Button20Click(Sender: TObject);
var
i:integer;
begin
If ListView1.Items.Count <= 0 Then Exit;
For I:=0 To ListView1.Items.Count -1 Do
If (ListView1.Items[i].SubItems[0] = 'Done') or (ListView1.Items[i].SubItems[0] = 'Incomplete') Then ListView1.Items[i].Delete;
end;
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
mx,my:integer;
p:tpoint;
begin
getcursorpos(p);
mx := p.x;
my := p.y;
if Button = mbright then
PopUpMenu1.Popup(mX, mY);
Exit;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -