HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #4111  
Старый 16.08.2009, 23:20
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

НTL, вообще есть операторы прерывания и продолжения цикла.
break - выход из цикла
continue - переход к следующей итерации цикла
Вообще напиши весь код, а то как то непонятно какую цель ты преследуешь здесь.
Если ты удаляешь в цикле по строке из Memo и хочешь чтобы программа, когда число строк станет=0 удалила ещё одну строку, то тебе выдаст Access violation
Как вариант добавить доп. переменную
 
Ответить с цитированием

  #4112  
Старый 16.08.2009, 23:28
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

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

Цитата:
Сообщение от ZdezBilYa  
поставь переменную, например

Код:
temp:=Memo1.Lines.Count;
while  temp> 0 do
а там уже оперируй ей
Ты что, шутишь? это же безконечный цыкл! Например у мемо 2 строчки, и что тогда? Условие всегда верно, 2 всегда больше 0. Прога зависнет если break не делать в коде.
 
Ответить с цитированием

  #4113  
Старый 16.08.2009, 23:53
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

=Zeus=, вчитайся в слова
Цитата:
а там уже оперируй ей
Вот пример кода, который выполнится 2 раза, если у тебя две строчки:
Код:
temp:=Memo1.Lines.Count;
while  temp> 0 do
temp:=temp-1;
 
Ответить с цитированием

  #4114  
Старый 16.08.2009, 23:59
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

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

Цитата:
Сообщение от mailbrush  
Код:
temp:=Memo1.Lines.Count;
while  temp> 0 do
temp:=temp-1;
А ну если так то конечно, тут без вопросов.
 
Ответить с цитированием

  #4115  
Старый 17.08.2009, 01:22
Flenov
Участник форума
Регистрация: 22.11.2008
Сообщений: 142
Провел на форуме:
636446

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

Буду краток:

Код:
procedure ExtractIcons(FileName: String);
var
  Image: TIcon;
  Icon: HICON;
  i, iSize: Integer;
begin
  Image:=TIcon.Create;
  try
    iSize:=ExtractIconEx(PChar(FileName), -1, Icon, Icon, 0);
    if (iSize=0) then Exit;
    for i:=0 to iSize-1 do
                          begin
                            Image.Handle:=ExtractIcon(HInstance, PChar(FileName), i);
                            Image.SaveToFile('Icon'+'('+IntToStr(i+1)+')'+'.ico');
                          end;
  finally
    Image.Free;
  end;
end;
Проблемма в том, что сия процедура бесчинствует с размерами, качеством и цветами.
Как бы поправить сие творение чтобы оно нормально сохраняло иконки?
 
Ответить с цитированием

  #4116  
Старый 17.08.2009, 05:44
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


Отправить сообщение для De-visible с помощью ICQ
По умолчанию

Попробуй помолиться...
 
Ответить с цитированием

  #4117  
Старый 17.08.2009, 17:11
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

Flenov, PC_Icon_Extractor_4.1_Portable в руки. Извлекает все иконки из любых файлов, будь то dll, exe etc.

А по существу, то надо было сделать так:

Код:
unit extracticons;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

type ThIconArray = array[0..0] of hIcon;
type PhIconArray = ^ThIconArray;

function ExtractIconEx(lpszFile: PAnsiChar;
  nIconIndex: Integer;
  phiconLarge : PhIconArray;
  phiconSmall: PhIconArray;
  nIcons: UINT): UINT; stdcall;
  external 'shell32.dll' name 'ExtractIconExA';  

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  NumIcons: integer;
  pTheLargeIcons: phIconArray;
  pTheSmallIcons: phIconArray;
  LargeIconWidth,LargeIconHeight,
  SmallIconWidth,SmallIconHeight: integer;
  i: integer;
  TheIcon: TIcon;
  TheBitmap: TBitmap;
begin
  NumIcons := ExtractIconEx('D:\system.dll',-1, nil, nil, 0);
  if NumIcons > 0 then
  begin
    LargeIconWidth := GetSystemMetrics(SM_CXICON);
    LargeIconHeight := GetSystemMetrics(SM_CYICON);
    SmallIconWidth := GetSystemMetrics(SM_CXSMICON);
    SmallIconHeight := GetSystemMetrics(SM_CYSMICON);
    GetMem(pTheLargeIcons, NumIcons * sizeof(hIcon));
    GetMem(pTheSmallIcons, NumIcons * sizeof(hIcon));
    FillChar(pTheLargeIcons^, NumIcons * sizeof(hIcon), #0);
    FillChar(pTheSmallIcons^, NumIcons * sizeof(hIcon), #0);
    ExtractIconEx('D:\system.dll',0, pTheLargeIcons, pTheSmallIcons, numIcons);
    {$IFOPT R+}
    {$DEFINE CKRANGE}
    {$R-}
    {$ENDIF}
    for i := 0 to (NumIcons - 1) do
    begin
      TheIcon := TIcon. Create;
      TheBitmap := TBitmap.Create;
      TheIcon.Handle := pTheLargeIcons^[i];
      TheBitmap.Width := LargeIconWidth;
      TheBitmap.Height := LargeIconHeight;
      TheBitmap.Canvas.Draw(0, 0, TheIcon);
      TheIcon.Free;
      TheBitmap.SaveToFile('D:\ic\l'+inttostr(i)+'.ico');
      TheBitmap.Free;


      TheIcon := TIcon. Create;
      TheBitmap := TBitmap.Create;
      TheIcon.Handle := pTheSmallIcons^[i];
      TheBitmap.Width := SmallIconWidth ;
      TheBitmap.Height := SmallIconHeight;
      TheBitmap.Canvas.Draw(0, 0, TheIcon);
      TheIcon.Free;
      TheBitmap.SaveToFile('D:\ic\s'+inttostr(i)+'.ico');
      TheBitmap.Free;
    end;
    {$IFDEF CKRANGE}
    {$UNDEF CKRANGE}
    {$R+}
    {$ENDIF}
    FreeMem(pTheLargeIcons, NumIcons * sizeof(hIcon));
    FreeMem(pTheSmallIcons, NumIcons * sizeof(hIcon));
  end;

end;

end.
Конечно это не идеальный вариант, программа извлекает иконку в двух размерах 32х32 и 16х16, можешь оставить то, что тебе надо.
 
Ответить с цитированием

  #4118  
Старый 17.08.2009, 17:47
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


Отправить сообщение для НTL с помощью ICQ
По умолчанию

Как при помощи IdHTTP получить куки при авторизации на сайте Post запросом, а потом их отправить вместе с другим пост запросом???
 
Ответить с цитированием

  #4119  
Старый 17.08.2009, 18:21
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

Вот пример авторизации в LJ
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Http  : TidHttp;
  CM    : TidCookieManager;
  Data  : TStringList;
  StrPage, UserID,  UserName  :  String;
  i : integer;
begin
  try
    Http := TIdHTTP.Create(Self);
    Data := TStringList.Create;
    CM := TidCookieManager.Create(Http);
    Http.AllowCookies := true;
    Http.CookieManager := CM;
    Http.HandleRedirects := true;

    Http.Request.Host:='livejournal.com';
    Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
    Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
    Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
    Http.Request.Referer:='http://www.livejournal.com/';

    Data.Add('mode=login');
    Data.Add('user=Qwerty');
    Data.Add('password=PASS');
    StrPage := Http.Post('http://www.livejournal.com/login.bml?ret=1', Data);
  finally
    Data.Free;
    CM.Free;
    Http.Free;
  end;

  if Pos('<input class="logoutlj_hidden" id="user" name="user" type="hidden" value="'+Qwerty,StrPage) <> 0 then
    ShowMessage('Авторизация прошла успешно')
  else
    ShowMessage('Авторизация провалилась');

  Memo1.Lines.Text := StrPage;
end;

Возвращенные заголовки (после ответа сервера) можно посмотреть так:

idHttp.Response.RawHeaders.GetText;


Сохраненные в CookieManager-е кукисы можно посмотреть так:

Код:
for i := 0 to Http.CookieManager.CookieCollection.Count - 1 do
  StrPage := StrPage + CM.CookieCollection.Items[i].CookieText + #13#10;

Последний раз редактировалось cremator (c); 17.08.2009 в 18:24..
 
Ответить с цитированием

  #4120  
Старый 17.08.2009, 21:38
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


Отправить сообщение для НTL с помощью ICQ
По умолчанию

cremator (c), ну вот я авторизировался, получил куки, а как эти куки передать в другом пост запросе, что-то до меня не дошло
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2568 25.04.2026 12:58
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



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


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




ANTICHAT.XYZ