HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

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

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

  #1132  
Старый 20.02.2008, 18:57
dos999
Познающий
Регистрация: 15.02.2008
Сообщений: 98
С нами: 9598011

Репутация: 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
Участник форума
Регистрация: 23.04.2007
Сообщений: 233
С нами: 10026761

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

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

  #1134  
Старый 21.02.2008, 13:38
Смоки
Новичок
Регистрация: 11.02.2008
Сообщений: 7
С нами: 9603528

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

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

  #1135  
Старый 21.02.2008, 16:09
Смоки
Новичок
Регистрация: 11.02.2008
Сообщений: 7
С нами: 9603528

Репутация: 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.
 
Ответить с цитированием

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

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

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

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

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

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

  #1138  
Старый 22.02.2008, 03:50
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
С нами: 9839462

Репутация: 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;
 
Ответить с цитированием

  #1139  
Старый 22.02.2008, 04:01
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
С нами: 9839462

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

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

  #1140  
Старый 22.02.2008, 16:10
Myst
Познающий
Регистрация: 22.02.2008
Сообщений: 62
С нами: 9587964

Репутация: 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 Беспроводные технологии/Wi-Fi/Wardriving 2570 09.06.2026 16:21
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



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


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




ANTICHAT ™ © 2001- Antichat Kft.