Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

20.02.2008, 18:00
|
|
Участник форума
Регистрация: 06.03.2007
Сообщений: 283
Провел на форуме: 1547094
Репутация:
120
|
|
dos999, ну попробуй сделать на примере античата
|
|
|

20.02.2008, 18:57
|
|
Познающий
Регистрация: 15.02.2008
Сообщений: 98
Провел на форуме: 183980
Репутация:
50
|
|
грузи лучше не в файл, а в поток или строку, зачем лишние операции)) При гете указывай явно какая кодировка требуется; ну и на всякий может пригодится функция Utf8ToAnsi, так же оринетироваться при парсинге лучше по английским словам и тэгам
дело в том что Api-шка сохраняет в файл
Код:
function GetPart(ABegin, AEnd, Str: String): String;
var
b, c: Integer;
begin
if ABegin <> '' then
b := pos(ABegin, Str) + length(ABegin)
else
b := 1;
if AEnd <> '' then
c := pos(AEnd, Str) - b
else
c := length(Str) - b + 1;
Result := copy(Str, b , c);
end;
function ButtonClick(Sender: TObject): integer;
var
AStrings: TStringList;
function FindText: String;
var
i: Integer;
s: String;
begin
for i := 0 to AStrings.Count - 1 do
if pos('Сейчас на форуме </a>: ', AStrings[i]) > 0 then
begin
s := AStrings[i];
Result := GetPart('Сейчас на форуме </a>: ', ' (', s);
end;
end;
begin
AStrings := TStringList.Create;
Result := 0;
try
URLDownloadToFile(nil, 'http://forum.antichat.ru/', 'temp_file.txt', 0, nil);
AStrings.LoadFromFile('temp_file.txt');
Result := StrToInt(FindText);
DeleteFile('temp_file.txt');
finally
AStrings.Free;
end;
end;
что то вроде этого
PS. второй пост на форуме, строго не судите 
|
|
|

21.02.2008, 01:26
|
|
Участник форума
Регистрация: 23.04.2007
Сообщений: 233
Провел на форуме: 671223
Репутация:
91
|
|
Доброго времени суток .
Интересует следующее :
Многопоточность в Delphi в частности ICS .(если можно, пример использования)
И как узнать свой айпи . (т.е. какой айпи привязан к активному интерфейсу ?)
Спасибо
|
|
|

21.02.2008, 13:38
|
|
Новичок
Регистрация: 11.02.2008
Сообщений: 7
Провел на форуме: 34671
Репутация:
1
|
|
2Xszz про определение ip-адресов интерфейсов: _http://www.delphimaster.ru/cgi-bin/forum.pl?id=1199825920&n=4
|
|
|

21.02.2008, 16:09
|
|
Новичок
Регистрация: 11.02.2008
Сообщений: 7
Провел на форуме: 34671
Репутация:
1
|
|
вопрос по сокетам(winsock 1, 2) . Передачу данных никогда делать не пробовал. пользовался компонентами. решил попробовать и нифига не получаеться. конект есть, а данные или не передаются или не принимаются.
код сервера:
Код:
const
port = 256;
fname = 'c:\BUF.txt';
var
WSAData:TWSAData;
sock:TSocket;
SAddr:TSockAddr;
size_sa:integer;
buf:array[1..255] of char;
f:text;
begin
assign(f,fname);
rewrite(f);
if WSAStartup($202,WSAData)<>0 then
begin
writeln('startup error...');
exit;
end;
SAddr.sin_family:=AF_INET;
SAddr.sin_port:=htons(port);
sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if sock = INVALID_SOCKET then
begin
writeln('socket error...');
exit;
end;
if bind(sock,@SAddr,sizeof(SAddr))<>0 then
begin
writeln('bind error...');
exit;
end;
size_sa:=sizeof(SAddr);
listen(sock,1);
accept(sock,@SAddr,@size_sa);
recv(sock,buf,sizeof(buf),0);
append(f);
writeln(f,buf);
closesocket(sock);
close(f);
WSACleanup;
writeln('press any key to exit...');
end.
Код клиента:
Код:
port = 256;
ip = '192.168.10.33';
var
WSAData:TWSAData;
sock:TSocket;
SAddr:TSockAddr;
i,size_sa:integer;
buf:array[1..255] of char;
begin
if WSAStartup($202,WSAData)<>0 then
begin
writeln('startup error...');
exit;
end;
SAddr.sin_family:=AF_INET;
SAddr.sin_addr.S_addr:=inet_addr(pchar(ip));
SAddr.sin_port:=htons(port);
sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if sock = INVALID_SOCKET then
begin
writeln('socket error...');
exit;
end;
size_sa:=sizeof(SAddr);
if connect(sock,@SAddr,size_sa)<>0 then
begin
writeln('error connect...');
exit;
end;
for i:=1 to 26 do
buf[i]:=char((ord('a')-1)+i);
send(sock,buf,sizeof(buf),0);
writeln(buf);
closesocket(sock);
WSACleanup;
writeln('press any key for exit...');
end.
|
|
|

22.02.2008, 01:15
|
|
Участник форума
Регистрация: 23.04.2007
Сообщений: 233
Провел на форуме: 671223
Репутация:
91
|
|
как разбить строку вида 192.168.0.1 на 192 168 0 1 .
И как отсекать только последнюю часть ? т.е. (1) ? Чтоб в результате получать
192.168.0.
Спасибо .
|
|
|

22.02.2008, 01:50
|
|
Новичок
Регистрация: 20.02.2008
Сообщений: 1
Провел на форуме: 23785
Репутация:
0
|
|
Как проверить склеен ли файл джойнером ?
|
|
|

22.02.2008, 03:50
|
|
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме: 422909
Репутация:
200
|
|
Сообщение от Xszz
как разбить строку вида 192.168.0.1 на 192 168 0 1 .
И как отсекать только последнюю часть ? т.е. (1) ? Чтоб в результате получать
192.168.0.
Спасибо .
Если конечно ты подразумевал работу со строками, то вот:
Код:
//удаляет все точки из строчки (рифма=))
function DelPoints(st:string):string;
var
i:integer;
begin
for i:=1 to length(st) do
if st[i]='.' then
st[i]:=' ';
result:=st;
end;
//удаление последнего числа после точки
function DelEnd(st:string):string;
var
i:integer;
begin
for i:=length(st) downto 1 do
if st[i]='.' then begin
result:=copy(st,1,i);//В данном случае точка в конце остается как ты и просил,
// ну а так result:=copy(st,1,i-1);её не будет
break;
end;
end;
//пример использования
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=Edit1.Text;
Edit2.Text:=DelPoints(s);
Edit3.Text:=DelEnd(s);
end;
|
|
|

22.02.2008, 04:01
|
|
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме: 422909
Репутация:
200
|
|
Сообщение от vipadmin
Как проверить склеен ли файл джойнером ?
Ты что хочешь программу написать, которая бы это определяла? Если да то тебе нужно научиться работать с заголовками PE файлов, поскольку по EP(entry point) можно определить откуда начинается запуск файла. Дак вот если файл-результат работы склейщика, то запускается сначала движок джойнера (стаб). Поэтому если хошь сделать своего рода детектор, то нужно вести базу сигнатур (т.е известные стабы). Конечно нужно учитывать, что файл может быть еще и закриптованным!
А если просто хочешь визуально определить, то самый простой способ: берешь любой редоктор exe файлов, загружаешь и смотришь секции. Если новичок в этом можешь начать сResourceHacker...
|
|
|

22.02.2008, 16:10
|
|
Познающий
Регистрация: 22.02.2008
Сообщений: 62
Провел на форуме: 211076
Репутация:
52
|
|
как разбить строку вида 192.168.0.1 на 192 168 0 1
Насколько я понял ты хочешь из строки 192.168.0.1 получить 4 числа.
Код:
procedure getip(ip:string; var a,b,c,d:byte);
// ip - ip адрес в строковом формате, a,b,c,d - искомые числа
var
i:byte;
x:array[0..3]of byte;
begin
for i:=0 to 3 do begin
x[i]:=0;
while (ip<>'') and (ip[1]<>'.') do
begin
x[i]:=x[i]*10+strtoint(ip[1]);
delete(ip,1,1);
end;
if (ip<>'') and (ip[1]='.') then
delete(ip,1,1);
end;
a:=x[0];
b:=x[1];
c:=x[2];
d:=x[3];
end;
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|