ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1131  
Старый 20.02.2008, 18:00
Аватар для xaker-boss
xaker-boss
Участник форума
Регистрация: 06.03.2007
Сообщений: 283
Провел на форуме:
1547094

Репутация: 120
Отправить сообщение для xaker-boss с помощью ICQ
По умолчанию

dos999, ну попробуй сделать на примере античата
 
Ответить с цитированием

  #1132  
Старый 20.02.2008, 18:57
Аватар для dos999
dos999
Познающий
Регистрация: 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. второй пост на форуме, строго не судите
 
Ответить с цитированием

  #1133  
Старый 21.02.2008, 01:26
Аватар для Xszz
Xszz
Участник форума
Регистрация: 23.04.2007
Сообщений: 233
Провел на форуме:
671223

Репутация: 91
Отправить сообщение для Xszz с помощью ICQ
По умолчанию

Доброго времени суток .
Интересует следующее :
Многопоточность в Delphi в частности ICS .(если можно, пример использования)
И как узнать свой айпи . (т.е. какой айпи привязан к активному интерфейсу ?)
Спасибо
 
Ответить с цитированием

  #1134  
Старый 21.02.2008, 13:38
Аватар для Смоки
Смоки
Новичок
Регистрация: 11.02.2008
Сообщений: 7
Провел на форуме:
34671

Репутация: 1
Отправить сообщение для Смоки с помощью ICQ
По умолчанию

2Xszz про определение ip-адресов интерфейсов: _http://www.delphimaster.ru/cgi-bin/forum.pl?id=1199825920&n=4
 
Ответить с цитированием

  #1135  
Старый 21.02.2008, 16:09
Аватар для Смоки
Смоки
Новичок
Регистрация: 11.02.2008
Сообщений: 7
Провел на форуме:
34671

Репутация: 1
Отправить сообщение для Смоки с помощью ICQ
По умолчанию

вопрос по сокетам(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.
 
Ответить с цитированием

  #1136  
Старый 22.02.2008, 01:15
Аватар для Xszz
Xszz
Участник форума
Регистрация: 23.04.2007
Сообщений: 233
Провел на форуме:
671223

Репутация: 91
Отправить сообщение для Xszz с помощью ICQ
По умолчанию

как разбить строку вида 192.168.0.1 на 192 168 0 1 .
И как отсекать только последнюю часть ? т.е. (1) ? Чтоб в результате получать
192.168.0.
Спасибо .
 
Ответить с цитированием

  #1137  
Старый 22.02.2008, 01:50
Аватар для vipadmin
vipadmin
Новичок
Регистрация: 20.02.2008
Сообщений: 1
Провел на форуме:
23785

Репутация: 0
По умолчанию

Как проверить склеен ли файл джойнером ?
 
Ответить с цитированием

  #1138  
Старый 22.02.2008, 03:50
Аватар для A2GIL
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

Репутация: 200
Отправить сообщение для A2GIL с помощью ICQ
По умолчанию

Цитата:
Сообщение от 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;
 
Ответить с цитированием

  #1139  
Старый 22.02.2008, 04:01
Аватар для A2GIL
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

Репутация: 200
Отправить сообщение для A2GIL с помощью ICQ
По умолчанию

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

  #1140  
Старый 22.02.2008, 16:10
Аватар для Myst
Myst
Познающий
Регистрация: 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;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/WPAN/WLAN 2564 06.04.2026 23:31
[ *NIX ] Задай вопрос - получи ответ. Xszz *nix 1547 15.06.2010 15:41
[jQuery] - Задай вопрос, получи ответ Isis PHP, PERL, MySQL, JavaScript 62 25.12.2009 03:25
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ