ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

16.08.2009, 23:20
|
|
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме: 1240829
Репутация:
165
|
|
НTL, вообще есть операторы прерывания и продолжения цикла.
break - выход из цикла
continue - переход к следующей итерации цикла
Вообще напиши весь код, а то как то непонятно какую цель ты преследуешь здесь.
Если ты удаляешь в цикле по строке из Memo и хочешь чтобы программа, когда число строк станет=0 удалила ещё одну строку, то тебе выдаст Access violation
Как вариант добавить доп. переменную
|
|
|

16.08.2009, 23:28
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
Сообщение от ZdezBilYa
поставь переменную, например
Код:
temp:=Memo1.Lines.Count;
while temp> 0 do
а там уже оперируй ей
Ты что, шутишь? это же безконечный цыкл! Например у мемо 2 строчки, и что тогда? Условие всегда верно, 2 всегда больше 0. Прога зависнет если break не делать в коде.
|
|
|

16.08.2009, 23:53
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
=Zeus=, вчитайся в слова
Вот пример кода, который выполнится 2 раза, если у тебя две строчки:
Код:
temp:=Memo1.Lines.Count;
while temp> 0 do
temp:=temp-1;
|
|
|

16.08.2009, 23:59
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
Сообщение от mailbrush
Код:
temp:=Memo1.Lines.Count;
while temp> 0 do
temp:=temp-1;
А ну если так то конечно, тут без вопросов.
|
|
|

17.08.2009, 01:22
|
|
Участник форума
Регистрация: 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;
Проблемма в том, что сия процедура бесчинствует с размерами, качеством и цветами.
Как бы поправить сие творение чтобы оно нормально сохраняло иконки?
|
|
|

17.08.2009, 05:44
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Попробуй помолиться...
|
|
|

17.08.2009, 17:11
|
|
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме: 1240829
Репутация:
165
|
|
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, можешь оставить то, что тебе надо.
|
|
|

17.08.2009, 17:47
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Как при помощи IdHTTP получить куки при авторизации на сайте Post запросом, а потом их отправить вместе с другим пост запросом???
|
|
|

17.08.2009, 18:21
|
|
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме: 1240829
Репутация:
165
|
|
Вот пример авторизации в 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..
|
|
|

17.08.2009, 21:38
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
cremator (c), ну вот я авторизировался, получил куки, а как эти куки передать в другом пост запросе, что-то до меня не дошло
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|