Просмотр полной версии : [Delphi]/[Pascal] Задай вопрос, получи ответ
Плиз нужен совет.
Нужно вывести мыло:пароль
существуют строки:
1. Пароль
try
Fil.LoadFromFile('password1.txt');
Fil.LoadFromFile('password2.txt');
except
Showmessage('Файл не найден');
end;
Temp:=fil.strings[random (fil.count-1)];
Data.add ('user.password1='+temp);
Data.add ('user.password2='+temp);
2. Логин (от мыла , до @)
Data.Add('user.login='+fil.strings[random(fil.count-1)]);
Как мне то что получилось после реги, то есть мыло:пароль вывести в мемо ?
Memo1.Lines.Add(''); - что в скобках писать ? или как то строки можно вписать, то есть их номера.
Спасибо заранее!
1. Обрезать логин от мыла:
2. Записать строкой в Мемо Логин:Пароль
const
str='Administrator@mail.ru';
Password= '123456';
var
Login:string;
begin
Login:=Copy(str,1,Pos('@',str)-1); {1. В Login сохранится Administrator}
Memo1.Lines.Add(Login+':'+Password); {2. В мемо добиватся строка Administrator:123456}
end;
winlogon.exe
04.04.2010, 06:55
Как сделать чтобы въводился с сайта текст между ффф и шшш символами? Т.е. Например есть там текст на сайте "ыуа11.фффJMTDAGPJшшш" и надо чтобы выводилось только JMTDAGPJ в самой программе :)
Считывай побайтово строку до тех пор пока не найдешь подряд 3 "ффф", записывай порядковый номер последнего ( var1 ) и продолжай считывать до тех пор пока не встретишь сочетание из "шшш". Записывай порядковый номер первого из них ( var2 ). Затем просто выводи символы в диапазоне от var1+1 до var2-1.
--
Ну короче говоря ты ничего не понял, так что юзай регулярку.
не ты меня не понял,мне нужно было вывод зареганных мыла:пароля а не просто из проги указанный.
Как сделать чтобы въводился с сайта текст между ффф и шшш символами? Т.е. Например есть там текст на сайте "ыуа11.фффJMTDAGPJшшш" и надо чтобы выводилось только JMTDAGPJ в самой программе :)
function ParserBlock(const Str:string; const Param1,Param2:string):string;
var
BeginPos,
EndPos:integer;
TempStr:string;
begin
TempStr:=Str;
BeginPos:=AnsiPos(Param1,TempStr)+length(Param1);
delete(TempStr,1,beginPos-1);
BeginPos:=AnsiPos(Param1,TempStr)+length(Param1);
EndPos:=AnsiPos(Param2,TempStr);
Result:=copy(TempStr,1,EndPos-1);
end;
Применять:
ShowMessage(ParserBlock('ыуа11.фффJMTDAGPJш шш', 'ффф','шшш ')); // JMTDAGPJ
Содержимое страницы:
Str:=idHttp1.Get('http://127.0.0.1'); // получить содержимое страницы.
не ты меня не понял,мне нужно было вывод зареганных мыла:пароля а не просто из проги указанный.
Приводи тогда исходник.
Иначе объявляй str, Password как переменные string;
и в цикле присваивай значений
str:=fil.strings[random (fil.count-1)]; // login
Password:=fil.strings[random (fil.count-1)]; // Password
//Password:=Temp; // Password
P.s. из приведенного кода можно понять, что ты загружаешь в StringList пароли из password2.txt и рандомно выбираешь из него пароль, и не понятно как логин :rolleyes: .
Fil.LoadFromFile('password1.txt');
Fil.LoadFromFile('password2.txt');
они не дополняются, а заменяются, последним загруженным файлом.
winlogon.exe
04.04.2010, 16:39
Применять:
[PHP]ShowMessage(ParserBlock('ыуа11.фффJMTDAGPJш шш', 'ффф','шшш ')); // JMTDAGPJ
а как чтобы не ('ыуа11.фффJMTDAGPJшшш', было, а то, что на сайте, и от туда извлекало? Значение между ффф и шшш всегда разное (
[stranger]
04.04.2010, 17:54
поснифал трафик при заливке аватарки вк, вот что получил:
POST /upload.php?act=profile&mid=********&hash=2539ce128944e34c65d35a5683edbf0e&rhash=704af199d8f74ba45d646f47b249dc5a&vk= HTTP/1.1
сабж: откуда берутся хеши и имя сервера для отправки аватарки? сниффер не дает ответа на эти вопросы
winlogon.exe
04.04.2010, 18:06
откуда берутся хеши
при авторизации, хэш есть в исходнике страници.
откуда берется имя сервера для отправки аватарки
vkontakte.ru/upload.php?act=profile&mid=
или
http://cs10311.vkontakte.ru/upload.php?act=profile&mid=ххх&hash=ххх&rhash=ххх&vk=
[stranger]
04.04.2010, 18:17
т.е. всего лишь надо спарсить страницу на эти хеши?
winlogon.exe
04.04.2010, 18:21
']т.е. всего лишь надо спарсить страницу на эти хеши?
да
а как чтобы не ('ыуа11.фффJMTDAGPJшшш', было, а то, что на сайте, и от туда извлекало? Значение между ффф и шшш всегда разное (
вместо 'ыуа11.фффJMTDAGPJшшш' подставляешь переменную Str,
вместо ффф тег который перед нужным текстом,
вместо шшш тег, который в конце.
выводит текст между тегами <title> </title>
var
str:string;
begin
Str:=idHttp1.Get('http://forum.antichat.ru/');
ShowMessage(ParserBlock(Str, '<title>','</title>')); // Форум АНТИЧАТ - безопасность WEB - интерфейсов
end;
P.s. но если подобное выражение встречается несколько раз, то тут надо обрезать ненужный текст, или можно дописать функцию, что бы начальная позиция начиналась не с 1 символа, a с N.
winlogon.exe
04.04.2010, 21:31
вместо 'ыуа11.фффJMTDAGPJшшш' подставляешь переменную Str,
вместо ффф тег который перед нужным текстом,
вместо шшш тег, который в конце.
выводит текст между тегами <title> </title>
var
str:string;
begin
Str:=idHttp1.Get('http://forum.antichat.ru/');
ShowMessage(ParserBlock(Str, '<title>','</title>')); // Форум АНТИЧАТ - безопасность WEB - интерфейсов
end;
P.s. но если подобное выражение встречается несколько раз, то тут надо обрезать ненужный текст, или можно дописать функцию, что бы начальная позиция начиналась не с 1 символа, a с N.
спасибо большое :)
Кто может кинуть сюда подробную инструкции по сборке чата галактике на делфи с кодами и если можно напиши какой код куда вставить и порядок. ЗАРАНЕЕ СПАСИБО!
SkyLine32
06.04.2010, 11:10
Такая вот у меня херня.
Пытаюсь всунуть в свою программу звук. Нашёл код:
// В файл Alarm.rc пишешь:
// Alarm RCDATA LOADONCALL Alarm.wav
// Затем компилируешь
// brcc32.exe Alarm.rc, получаешь Alarm.res.
// В своей программе пишешь:
// {$R Alarm.res}
// или используешь программу для работы с ресурсами
создаю новый проект, кидаю в него Alarm.rc, компилирую. Сохраняю Alarm.res.
Запускаю проект со своей прогой, вставляю {$R Alarm.res}, компилирую, ошибка
[Error] WARNING. Duplicate resource(s):
[Error] Type 14 (ICON GROUP), ID MAINICON:
[Error] File C:\Program Files\Borland\Delphi7\Projects\shutka\1\shutka.res resource kept; file Alarm.res resource discarded.
Ищу в гугле решение, нашёл, понимаю что повторяется 2 раза {$R *.dfm}. Убираю в первом проекте этот {$R *.dfm}, компилирую и ошибка.
И в чём лажа :confused: , помогите!
SkyLine32
06.04.2010, 11:37
Всё, нашёл решение, в папку \Delphi7\Bin кидаем Alarm.rc и Alarm.wav
Alarm.rc перетаскиваем на brcc32.exe и появляется Alarm.RES
P.S. Может кому пригодится :)
Такая вот у меня херня.
Пытаюсь всунуть в свою программу звук. Нашёл код:
создаю новый проект, кидаю в него Alarm.rc, компилирую. Сохраняю Alarm.res.
Запускаю проект со своей прогой, вставляю {$R Alarm.res}, компилирую, ошибка
Ищу в гугле решение, нашёл, понимаю что повторяется 2 раза {$R *.dfm}. Убираю в первом проекте этот {$R *.dfm}, компилирую и ошибка.
И в чём лажа :confused: , помогите!
в *.dpr прописано {$R *.res} , тоесть по идеи он должен подключать все ресурсы которые находятся в каталоге с исходниками.
Вызвать Project1.dpr можно: View> Units (CTRL+F12) > Project1
Вот еще ссылка:
Проигрование Wave помещеного в ресурс (http://www.delphisources.ru/pages/faq/base/wave_resource.html)
SkyLine32
06.04.2010, 12:00
в *.dpr прописано {$R *.res} , тоесть по идеи он должен подключать все ресурсы которые находятся в каталоге с исходниками.
Вызвать Project1.dpr можно: View> Units (CTRL+F12) > Project1
Вот еще ссылка:
Проигрование Wave помещеного в ресурс (http://www.delphisources.ru/pages/faq/base/wave_resource.html)
Спасибо, я уже разобрался :)
stepashka_
06.04.2010, 14:36
Кто может кинуть сюда подробную инструкции по сборке чата галактике на делфи с кодами и если можно напиши какой код куда вставить и порядок. ЗАРАНЕЕ СПАСИБО!
он написан на java
stepashka_
06.04.2010, 16:04
Да мне для компа нужна
Что именно? Запус явы на ПК ?
Таких прогу куча.
Или ты хочеш свой чат накатать? :D
SkyLine32
06.04.2010, 16:18
Он видимо хочет код чата галактики на delphi чтобы создать такой же чат и быть крутым челом :D
stepashka_
06.04.2010, 16:24
Он видимо хочет код чата галактики на delphi чтобы создать такой же чат и быть крутым челом :D
такого кода нет.
она написана на другом языке
SkyLine32
06.04.2010, 16:32
такого кода нет.
она написана на другом языке
Это ты мне то зачем говоришь? Говори icqnum, я то знаю прекрасно этот чат и на чём он написан.
SkyLine32
06.04.2010, 18:55
Мне нужно из процедуры:
procedure TForm1.FormHide(Sender: TObject);
begen
...
end;
вызвать таймер, то есть после сворачивания формы должен запустится таймер:
procedure TForm1.FormHide(Sender: TObject);
begin
Label1.Caption := 'Hello World';
{ после этого запускаем тут таймер который будет влиять на то что находится ниже }
ShowMessage('Будь проклят этот мир!!!');
end;
Ну это всего лишь пример. Как можно сделать подобную хрень? хелп!
Как можно сделать на delphi так, что бы нельзя было закрыть программу ни чере alt+f4 ни через правую кнопку закрыть, ни свернуть?
Подскажите пожалуйста!
SkyLine32
06.04.2010, 19:09
Как можно сделать на delphi так, что бы нельзя было закрыть программу ни чере alt+f4 ни через правую кнопку закрыть, ни свернуть?
Подскажите пожалуйста!
не закрыть через alt + f4
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = VK_F4) and (ssAlt in Shift) then begin
Key := 0;
end;
end;
что то не выходит, я новичок в этом деле, куда вставить этот код?
Как можно сделать подобную хрень? хелп!
sleep? (если же программа будет виснуть при sleep - то создавай отдельную процедуру, заноси в нее то что в процедуре FormHide, ну и дальше эту отдельную процедуру вызывай через отдельный поток (createthread))
SkyLine32
06.04.2010, 19:26
что то не выходит, я новичок в этом деле, куда вставить этот код?
клинки на форму и перейди в Events, кликни 2 раза по FormKeyDown и вставь в форме
if (Key = VK_F4) and (ssAlt in Shift) then begin
Key := 0;
между begin и end
код не работает, закрывает!
fenixelite
06.04.2010, 20:31
SkyLine32, не прокатит. Он закроет быстрее чем проверит, что нажато ))
fenixelite
06.04.2010, 21:23
Упп, не много ошибся. Все таки код SkyLine32 работает. Лично проверил.
if ((ssAlt in Shift) and (Key = VK_F4)) then
Key := 0;
[stranger]
06.04.2010, 22:35
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
canclose := false;
end;
fenixelite
07.04.2010, 06:15
Да canclose не прокатит. Тогда это не только Alt+F4 блочить будет, а любой закрытие.
Да canclose не прокатит. Тогда это не только Alt+F4 блочить будет, а любой закрытие.
Проверку по флагу можно сделать, если было нажато ALT+F4 тогда флаг False иначе True; Но автору вопроса кажется и надо, что бы процесс никак нельзя было прибить.
Как можно сделать на delphi так, что бы нельзя было закрыть программу ни чере alt+f4 ни через правую кнопку закрыть, ни свернуть?
Подскажите пожалуйста!
Это в тип формы:
public
Procedure ControlWindow(Var Msg:TMessage); message WM_SYSCOMMAND;
{ Public declarations }
end;
Ниже implementation:
Procedure TForm1.ControlWindow(Var Msg:TMessage);
Begin
IF (Msg.WParam=SC_MINIMIZE) or (Msg.WParam=SC_CLOSE) then
Begin
//ничего не делаем
End
else
inherited;
End;
P.s. Но все же прибить через панель задач можно :)
Что бы и там нельзя было: тогда CanClose:=false; как писали выше.
Мне нужно из процедуры:
procedure TForm1.FormHide(Sender: TObject);
begen
...
end;
вызвать таймер, то есть после сворачивания формы должен запустится таймер:
procedure TForm1.FormHide(Sender: TObject);
begin
Label1.Caption := 'Hello World';
{ после этого запускаем тут таймер который будет влиять на то что находится ниже }
ShowMessage('Будь проклят этот мир!!!');
end;
Ну это всего лишь пример. Как можно сделать подобную хрень? хелп!
Есть Вариант типа "свернуть", Поместить в трей, а окно спрятать тогда:
СсылкО (http://delphi-faq.zoxt.net/1681.htm)
Procedure ControlWindow(Var Msg:TMessage); message WM_SYSCOMMAND;
...
Procedure TForm1.ControlWindow(Var Msg:TMessage);
Begin
IF Msg.WParam=SC_MINIMIZE then
Begin
MessageBox(0,'Minimized','Мы типа решили свернуть окно',32);
ShowWindow(Handle,SW_HIDE); // Скрываем форму
// добавляем иконку в трей
// Запускаем таймер
// ShowWindow(Handle,SW_SHOW); // Показываем форму
End
else
inherited;
End;
А на каком языке написана гала?
А на делпхи че вообще не вариант написать галу?
А на каком языке написана гала?
А читать посты когда научимся?
http://forum.antichat.ru/showpost.php?p=2048251&postcount=6026
А на делпхи че вообще не вариант написать галу?
Если знаешь оба языка, то вариант написать есть.
P.s. Если собираешься писать копай в направлении Клиент для IRC .
http://forum.antichat.ru/showpost.php?p=894712&postcount=3
с чего лучше начать , кодерству хочу научится.
с чего лучше начать , кодерству хочу научится.
Если вообще не представляешь что такое програмирование то надо начать с самых простых вещей
Переменые
Константы
Оператор условия If else
Оператор выбора case
Циклы For/While/
Массивы.
Функции
.....
Не зависимо какой язык учить, эти основы есть в любом.
Хорошо учится на практики, что прочитал сразу пробывать накодить. (для меня так).
fenixelite
07.04.2010, 19:28
Malor1k, раз задаешь такие вопросы, значит совсем новичек... Бери паскаль и учу, там ничего сложного нет.
EndLeSSDre@M
08.04.2010, 08:34
Почему не работает эта программа??
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
f: file of real;
n,sum,pr:real;
begin
pr:=1;
sum:=0;
assignfile(f,'input.txt');
reset(f);
while not Eof(f) do
begin
Read(f, n);
sum:=sum+n;
pr:=pr*n;
end;
closefile(f);
sum:=abs(sum);
pr:=pr*pr;
writeln('Modul summi=',round(sum),' kvadrat proizvedenija=',round(pr));
readln;
end.
В конце всегда 0 0 выдает... все перепробовал
а если переделать вот так:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
f: textfile;
n,sum,pr:real;
begin
pr:=1;
sum:=0;
assignfile(f,'input.txt');
reset(f);
while not Eof(f) do
begin
Readln(f, n);
sum:=sum+n;
pr:=pr*n;
end;
closefile(f);
sum:=abs(sum);
pr:=pr*pr;
writeln('Modul summi=',round(sum),' kvadrat proizvedenija=',round(pr));
readln;
end.
то все работает! но нужно через типизированные файлы!
Почему не работает эта программа??
...
В конце всегда 0 0 выдает... все перепробовал
а если переделать вот так:
...
то все работает! но нужно через типизированные файлы!
1. Зачем цикл, если читается только 1 переменная. В любом случаи он пропускает чтение.
2. в файле скорее всего у тебя 123.32, а не ЧЈp=
З^@
Вот текстовый файл содержит: 123.11 (http://slil.ru/28926187)
Попробуй записать в файл при file of real, потом прочитать, все работает на ура.
EndLeSSDre@M
08.04.2010, 13:04
1. Зачем цикл, если читается только 1 переменная. В любом случаи он пропускает чтение.
2. в файле скорее всего у тебя 123.32, а не ЧЈp=
З^@
Вот текстовый файл содержит: 123.11 (http://slil.ru/28926187)
Попробуй записать в файл при file of real, потом прочитать, все работает на ура.
ну в общем то я понял, а вот вопросы тогда:
1: как сделать чтобы он читал несколько переменных... readln тут не канает
2: ЧЈp=З^@ что это вообще такое и есть ли возможность вводить нормальные значения?
Зачем цикл, если читается только 1 переменная.
как сделать что бы было несколько переменных?
ну в общем то я понял, а вот вопросы тогда:
1: как сделать чтобы он читал несколько переменных... readln тут не канает
2: ЧЈp=З^@ что это вообще такое и есть ли возможность вводить нормальные значения?
как сделать что бы было несколько переменных?
1. Как записываешь так и читаешь:
Записал в файл данные
n:=123.123;
Write(f,n);
n:=456.456;
Write(f,n);
Считал с файла данные, конечно лучше N сделать массивом.
Read(f, n);
WriteLn(FloatToStr(n));
Read(f, n);
WriteLn(FloatToStr(n));
2. ЧЈp=З^@ - это содержимое файла в real. тоесть (123.11). Нормальный вид, используй textfile. а там уже конвертируй в real
кaк умeньшить количeство используeмой опeрaтивки?
shaker101
08.04.2010, 15:48
1. Есть мыло (mail.ru).
Необходимо зарегить Мой Мир и установить аватарку.
2. Установить приложение в Моем Мире по ссылке.
Кто этим занималься - Помогите сформировать запросы в Делфи.
fenixelite
08.04.2010, 16:47
shaker101. Возьми снифер и смотри что шлеться и что приходит от сервера. Вроде ничего сложного.
Помогите реализовать список двухсвязный который храница в самой программе пока работает пока и есть данные
Разработать справочник пассажирских поездов с полями: номер поезда, станции отправления и назначения, время в дороге, категория поезду. Реализовать подпрограммы поиска: 1) по станциям отправления и назначения, 2) по категории поезду
процедуры
добавление
удаление
поиск
печать(вывод на экран)
Street.ok
08.04.2010, 17:14
Кто может написать приложения для контакта?
heretic1990
08.04.2010, 17:22
Кто может написать приложения для контакта?
ты местом ошибся!
Как в DLL использовать Indy компоненты??
idhttp например.
Как в DLL использовать Indy компоненты??
idhttp например.
Думаю так должно работать.
uses IdHTTP;
var
Http:TidHTTP;
begin
Http:=TidHTTP.Create(nil);
http.Get('http://127.0.0.1');
http.Free;
end;
Подобный вопрос решали:
hxxp://cbuilder.ru/index.php?PHPSESSID=fdfd1d273f852af62d46e2b4ea2d05 2a&topic=3946.0
и Тут (http://programmersforum.ru/showthread.php?t=61333)
SkyLine32
08.04.2010, 20:40
делаю для своих нужд программу и столкнулся с такой проблемой.
как мне в:
ShellExecute(Handle, 'open', 'C:\ПАПКА', nil, nil, SW_MAXIMIZE);
Мне нужно вместо 'C:\ПАПКА' указать тот путь который будет сохранён в *.ini файле.
Пытался делать так:
ShellExecute(Handle, 'open', Label1.Caption, nil, nil, SW_MAXIMIZE);, где в Label1.Caption у меня показывает путь к папке, вобщем много вариантов перепробовал, ничё не получается.
fenixelite
08.04.2010, 21:02
SkyLine32,
Pchar(label1.Caption)
:)
делаю для своих нужд программу и столкнулся с такой проблемой.
как мне в:
Мне нужно вместо 'C:\ПАПКА' указать тот путь который будет сохранён в *.ini файле.
Пытался делать так:
, где в Label1.Caption у меня показывает путь к папке, вобщем много вариантов перепробовал, ничё не получается.
Не совсем понял где проблема, но если верно, то
var
Path:string;
begin
Path:='"'+Path+'"';
ShellExecute(Handle, 'open', PAnsiChar(Path), nil, nil, SW_MAXIMIZE);
end;
Есть еще интересная команда: CreateProcess
fenixelite
08.04.2010, 21:17
JnK, проблема в том что используется для процедуры PAnsiChar >> ну и как следствие несоответствие типов в коде :)
[stranger]
08.04.2010, 23:30
внимательно прочитай что функция делает и что ей надо передавать!
The ShellExecute function opens or prints a specified file. The file can be an executable file or a document file. See ShellExecuteEx also.
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
JnK, проблема в том что используется для процедуры PAnsiChar >> ну и как следствие несоответствие типов в коде :)
PChar и PAnsiChar почти одинаковы, разница только в том что в первом некоторые символы читаются как 2, а во втором как 1 символ.
Если даже после того кода осталась проблема то может: uses ShellAPI; ?
P.s. Я знаю как работает, но может криво объяснил :) Гугл поможет.
Проверил у меня все работает, запускается 2 копия приложения во весь экран:
Uses ShellApi;
....
ShellExecute (Form1.Handle, 'open', PAnsiChar (Application.ExeName), nil, nil, SW_MAXIMIZE);
winlogon.exe
09.04.2010, 12:04
http://saveimg.ru/pictures/09-04-10/52a2a2a559d53c26220c80c09dadbd5d.png
http://saveimg.ru/pictures/09-04-10/e211559235a24a264d40c5c0037f85fc.png
как это исправить? уже пробывал разные форматы
пропробуй грузить BMP файлы. В Delphi 7 вообще небыло возмоности грузить jpeg и gif программно. Потом вроде это появилось, хотя и то кривовато
winlogon.exe
09.04.2010, 16:58
Забыл добавить в uses jpeg оказывается.сохраняется в любом формате.
Еще вопрос. Как сделать чтобы в юрл в стринг id вставлялся один из списка например, и при каждом коннекте менялся? Например в списке 10 ид разных.
Вида:
123
111
1562
43
68213
12
И т.п.
И он при каждом коннекте подставляет примерно так: http://site.ru/index.php?id=123
Список ид из файла или в самой программе)
Буду благодарен :) только учусь..)
помогите вынес себе мозг!!!!!!
http://s43.radikal.ru/i099/1004/44/dcd79690bebf.jpg (http://www.radikal.ru)
Такой вопросик:
Имеется Button1, при ее нажатии создаем и запускаем потоки, также имеется переменная count_threads_on (кол-во работающих потоков), соответсвенно при запуске потока увеличиваем count_threads_on, при завершении уменьшаем count_threads_on, потом Button1.Enabled:=False;
В Button1, поставил такой код (ждем пока не завершатся все потоки, возобновляем Button1)
while count_threads_on<>0 do Application.ProcessMessages;
if count_threads_on=0 then
Button1.Enabled:=True;
Так вот этот цикл конкретно выгружает процессор while count_threads_on<>0 do Application.ProcessMessages;
Может есть какой то выход? Или я что то не так сделал?
Еще у меня есть таймер, он обновляется каждую секунду, выполняет кое-что, может сделать проверку там (if count_threads_on=0 then Button1.Enabled:=True; ) ?
Короче говоря насколько я знаю, то это не критично?
Так как, ничего не подвисает, а просто глянул на загрузку процессора, и начал сомневатся что все норм.
EndLeSSDre@M
09.04.2010, 18:11
помогите вынес себе мозг!!!!!!
http://s43.radikal.ru/i099/1004/44/dcd79690bebf.jpg (http://www.radikal.ru)
ответ 1
на бейсике
for i=0 to 10
a(i)=i*2
next i
этот код дает нам такую последовательность:
0 2 4 6 8 10 12 14 16 18 20
for i=10 to 0 step -1
k=a(10-i)
a(10-i)=a(i)
a(i)=k
next i
понятно что тут меняются местами элементы.
Достаточно посчитать крайние члены:
i=10
k=a(0)
a(0)=a(10)
a(10)=k
иными словами по коду
i=10
k=0
a(0)=a(10) //то есть 0 заменяется на 20
a(10)=k // 20 заменяется на 0
вот и се
Такой вопросик:
Имеется Button1, при ее нажатии создаем и запускаем потоки, также имеется переменная count_threads_on (кол-во работающих потоков), соответсвенно при запуске потока увеличиваем count_threads_on, при завершении уменьшаем count_threads_on, потом Button1.Enabled:=False;
В Button1, поставил такой код (ждем пока не завершатся все потоки, возобновляем Button1)
while count_threads_on<>0 do Application.ProcessMessages;
if count_threads_on=0 then
Button1.Enabled:=True;
Так вот этот цикл конкретно выгружает процессор while count_threads_on<>0 do Application.ProcessMessages;
Может есть какой то выход? Или я что то не так сделал?
Еще у меня есть таймер, он обновляется каждую секунду, выполняет кое-что, может сделать проверку там (if count_threads_on=0 then Button1.Enabled:=True; ) ?
Почитай про Synchronize и OnTerminate, может это поможет.
вот тут статья довольно хорошая hxxp://forum.vingrad.ru/forum/s/dd3d4c1f673a46bd3a6a2d2fb6ee5ed9/topic-60076/view-all.html
Вопрос:
Подскажите что такое DPAPI (Data Protection Application Programming Interface). Облазил весь гугл, ничего конкретно не нашел. Это модуль? Если да, то может он у кого-то есть? Мне нужна функция DPAPI_Decrypt().
GhostOnline
09.04.2010, 19:32
Такой вопросик:
Имеется Button1, при ее нажатии создаем и запускаем потоки, также имеется переменная count_threads_on (кол-во работающих потоков), соответсвенно при запуске потока увеличиваем count_threads_on, при завершении уменьшаем count_threads_on, потом Button1.Enabled:=False;
В Button1, поставил такой код (ждем пока не завершатся все потоки, возобновляем Button1)
while count_threads_on<>0 do Application.ProcessMessages;
if count_threads_on=0 then
Button1.Enabled:=True;
Так вот этот цикл конкретно выгружает процессор while count_threads_on<>0 do Application.ProcessMessages;
Может есть какой то выход? Или я что то не так сделал?
Еще у меня есть таймер, он обновляется каждую секунду, выполняет кое-что, может сделать проверку там (if count_threads_on=0 then Button1.Enabled:=True; ) ?
Короче говоря насколько я знаю, то это не критично?
Так как, ничего не подвисает, а просто глянул на загрузку процессора, и начал сомневатся что все норм.
Не обязательно использовать этот цикл
В обработчике события класса потока OnTerminate можно просто проверять количество потоков и если оно равно нулю то включать кнопку Но обязательно надо сначала уменьшать счетчик. Например:
Dec(count_threads_on);
if count_threads_on = 0 then ...
А с таймером - тоже далеко не элегантное решение.
Ммм... Вроде понял. Ну а вообще, это же не критично, что используется свободная часть процессора, так как потоки у меня все равно низкого приоритета..., а хотя если программа должна быть основной, например какие-нибудь драйвера, то это неприемлимо?
Все супер работает как часы. :)
GhostOnline
09.04.2010, 20:26
Какая разница какого приоритета потоки? Код потока от этого работать быстрее не будет.
Я везде стараюсь сократить расходы ресурсов. Вот представь: этот цикл у тебя крутится, потоки медленно уничтожаются, а пользователь тем временем запустил еще один ресурсоемкий процесс. Это приведет к зависанию, и как следствие к плохому мнению о тебе как разработчике.
UPD:
И все же я считаю использовать такой цикл неверно.
Главный поток приложения имеет средний приоритет. Ты запускаешь в этом потоке цикл, в то время как у тебя есть потоки с низким приоритетам которым нужно коректно завершиться. Но процессорного времени им на это не хватает ибо много отъедает цикл в главном потоке. В итоге имеем к нагрузке процессора еще и медленное завершение потоков.
Скажите в какую сторону рыть?
Нужно перехватывать пароли и логины в браузерах.
Возможно перехватить POST запрос в котором идут логин и пароль?
Как это на Delphi делается?
SkyLine32
10.04.2010, 10:53
denjf что значит перехватить? может тебе нужен сниффер?
denjf что значит перехватить? может тебе нужен сниффер?
Мне нужен код на Delphi. или любая инфа о том как можно написать.
Суть программы:
Человек заполняет форму допустим на mail.ru вводит Логин и пароль. Нажимает на батон. Пошел HTTP POST запрос...
Так вот надо из этого запроса выдрать логин и пароль, т.е. его надо перехватить.
Нагуглил вот
необходимо просто напросто поставить хуки на:
функции Send (WSOCK32.DLL) и SendTo (WSOCK32.DLL)
Затем в обработчике отлавливать приходящий буфер, а именно http запрос
структура у него приблизительно такая (Iexplore):Код
GET http://forum.vingrad.ru/html/translit_only.js HTTP/1.0
Accept: */*
Referer: http://forum.vingrad.ru/index.php?showtopic=73775
Accept-Language: ru
Cookie: proforumforum_read=a%3A1%3A%7Bi%3A85%3Bi%3A1135668 044%3B%7D; proforummember_id=13023; proforumpass_hash=1efa643c0b56892ad056737dd9299bd3 ; proforumsession_id=5b9df56ccf5748242307a8f1de82eab 1; CookieIp=80.84.179.174
If-Modified-Since: Sat, 23 Jul 2005 09:40:01 GMT
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: forum.vingrad.ru
Proxy-Connection: Keep-Alive
или такая(Opera):Код
GET http://www.umc.ua/ HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.01 [ru]
Host: www.umc.ua
Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, */*
Accept-Language: ru, en
Accept-Charset: windows-1251;q=1.0, utf-8;q=1.0, utf-16;q=1.0, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Proxy-Connection: Keep-Alive
т.е. просто необходимо витягивать первую строку, проверять на "Содержание GET, OPTIONS, POST
Реализовать че то не могу ((
SkyLine32
10.04.2010, 11:36
вот пример сниффера который перехватывает заголовки, только впиши свой ip через который ты в инете сидишь. Вот из него можешь сделать то что тебе нужно клац (http://www.delphisources.ru/pages/sources/internet/2009-year/voice-sniffer.html)
лично проверил сейчас - работает отлично!
пишу программу на дельфине.. (работаю с компонентом веббраузер)
в процессе работы программы появляется ошибка.. ("Ошибка сценария.. продолжить выполнение сценариев на этой страницы ? да или нет варианты ответов..")
как от неё избавиться или как её скрыть ?
нельзя чтоб она появлялась !
Пытаюсь загрузить на фтп файл. пользуюсь indy ftp
вот код:
procedure TForm2.Button1Click(Sender: TObject);
begin
idFTP1.Host:=ftphost.Text; //FTP-сервер
idFTP1.Port:=21; //порт ФТП сервера
idFTP1.Username:=ftplogin.Text;
idFTP1.Password:=ftppass.Text;
idFTP1.Connect;
idFTP1.Put(edit1.Text);
idFTP1.Disconnect;
end;
выдаёт ошибку http://i066.radikal.ru/1004/05/840fcbb25fdc.png
что делать?)
EndLeSSDre@M
10.04.2010, 12:56
EP']Пытаюсь загрузить на фтп файл. пользуюсь indy ftp
вот код:
procedure TForm2.Button1Click(Sender: TObject);
begin
idFTP1.Host:=ftphost.Text; //FTP-сервер
idFTP1.Port:=21; //порт ФТП сервера
idFTP1.Username:=ftplogin.Text;
idFTP1.Password:=ftppass.Text;
idFTP1.Connect;
idFTP1.Put(edit1.Text);
idFTP1.Disconnect;
end;
выдаёт ошибку http://i066.radikal.ru/1004/05/840fcbb25fdc.png
что делать?)
компонент Indy IdFTP
В разделе Var:
IdFTP1 : TIdFTP;
При ФормОнЛоад:
IdFTP1 := TIdFTP.Create(IdFTP1);
Конект:
IdFTP1.Host := ftphost.Text;
IdFTP1.Username := ftplogin.Text;
IdFTP1.Password := ftppass.Text;
IdFTP1.Port := 21;
IdFTP1.Connect(True, 10000);
idFTP1.Put(edit1.Text);
idFTP1.Disconnect;
компонент Indy IdFTP
В разделе Var:
IdFTP1 : TIdFTP;
При ФормОнЛоад:
IdFTP := TIdFTP.Create(IdFTP1);
Конект:
IdFTP1.Host := ftphost.Text;
IdFTP1.Username := ftplogin.Text;
IdFTP1.Password := ftppass.Text;
IdFTP1.Port := 21;
IdFTP1.Connect(True, 10000);
idFTP1.Put(edit1.Text);
idFTP1.Disconnect;
IdFTP.Connect(True, 10000); - вот на эту строку ругается: [DCC Error] Unit2.pas(44): E2250 There is no overloaded version of 'Connect' that can be called with these arguments
а если её убрать то опять эта же ошибка.
EndLeSSDre@M
10.04.2010, 13:30
тогда давай так: какая версия Indy у тебя???
вот этот код нормально работает!
procedure TForm1.PutClick(Sender: TObject);
var
ftp: TIdFTP;
ms: TMemoryStream;
begin
ftp:=TIdFTP.Create(Application);
ms:=TMemoryStream.Create;
try
try
ftp.Host:=ftphost.Text;
ftp.Port:=21;
ftp.Username:=ftplogin.Text;
ftp.Password:=ftppass.Text;
ftp.Connect(true, 2000);
AssErt(ftp.Connected);
ftp.ChangeDir(' ');
ftp.Put(edit1.Text);
ShowMessage('Отправлено');
finally
ms.Free; ftp.Free;
end;
except
ShowMessage('Хрен! :(');
end;
end;
end.
Indy обнови кароче
пишу программу на дельфине.. (работаю с компонентом веббраузер)
в процессе работы программы появляется ошибка.. ("Ошибка сценария.. продолжить выполнение сценариев на этой страницы ? да или нет варианты ответов..")
как от неё избавиться или как её скрыть ?
нельзя чтоб она появлялась !
EndLeSSDre@M
10.04.2010, 14:50
пишу программу на дельфине.. (работаю с компонентом веббраузер)
в процессе работы программы появляется ошибка.. ("Ошибка сценария.. продолжить выполнение сценариев на этой страницы ? да или нет варианты ответов..")
как от неё избавиться или как её скрыть ?
нельзя чтоб она появлялась !
try except попробуй
или
{$I-}
....
{$I+}
[stranger]
10.04.2010, 14:52
procedure hintwnd();
var H:HWND;
Rec:TRect;
HintForm:TForm;
HintLabel:TLabel;
begin
H := FindWindow('Shell_TrayWnd', nil);
if h=0 then exit;
GetWindowRect(h, Rec);
HintForm:= TForm.Create(nil);
HintForm.Width:=225;
HintForm.Height:=75;
HintForm.Color:=clSkyBlue;
HintForm.BorderStyle:=bsNone;
HintForm.FormStyle := fsStayOnTop;
HintLabel:=TLabel.Create(nil);
with HintLabel do
begin
Parent:=HintForm;
WordWrap:=true;
Caption:=msg;
Align:=alClient;
Layout:=tlCenter;
Alignment:=taCenter;
end;
HintForm.AlphaBlend:=true;
HintForm.AlphaBlendValue:=0;
HintForm.Left:=Screen.Width-HintForm.Width;
HintForm.Top:=Rec.Top-HintForm.Height;
ShowWindow(HintForm.handle,SW_SHOWNOACTIVATE);
while HintForm.AlphaBlendValue < 255 do
begin
HintForm.AlphaBlendValue := HintForm.AlphaBlendValue + 3;
sleep(7);
HintForm.repaint;
end;
Sleep(5000);
while HintForm.AlphaBlendValue > 0 do
begin
HintForm.AlphaBlendValue := HintForm.AlphaBlendValue - 3;
sleep(10);
end;
HintLabel.Free;
HintForm.Free;
end;
при выполнении кода основная форма не перемещается и плохо реагирует на действия пользователя.. где грабли?
EndLeSSDre@M
10.04.2010, 14:57
ну не перемещается она у тебя из за этого кода:
HintForm.FormStyle := fsStayOnTop;
очевидно что она находится сверху.
а плохо реагирует это из за множества Sleep() скорее всего...
[stranger]
10.04.2010, 14:59
ну не перемещается она у тебя из за этого кода:
HintForm.FormStyle := fsStayOnTop;
очевидно что она находится сверху.
а плохо реагирует это из за множества Sleep() скорее всего...
плохо работает не созданная форма, а основная.. и слипы не должны играть никакой роли по идее, код выполняется в отдельном потоке!
try except попробуй
или
{$I-}
....
{$I+}
это чтобы скрыть появление этой ошибки да ?
DdoNbAsS
10.04.2010, 17:53
Скажите что бы на Делфи писать с чего начинать то?
Скажите что бы на Делфи писать с чего начинать то?
Советую начинать читать книги для новичков. Можешь найти в Google по запросу "Delphi для начинающих". Также посмотри здесь:
_http://rutracker.org/forum/viewtopic.php?t=2803667
n1ghtstalker
11.04.2010, 09:05
Скажите что бы на Делфи писать с чего начинать то?
имхо Библия Delphi от корки до корки.
Voland-791
11.04.2010, 09:12
Такой вопрос я внес данные в массив из переменной как мне этиже данные (строку) убрать какай нужна команда к нопки? хочу делать через условия..
AlexTheC0d3r
11.04.2010, 10:41
Такой вопрос я внес данные в массив из переменной как мне этиже данные (строку) убрать какай нужна команда к нопки? хочу делать через условия..
аннулируй ее, в чем проблемы?
AlexTheC0d3r
11.04.2010, 10:43
пишу программу на дельфине.. (работаю с компонентом веббраузер)
в процессе работы программы появляется ошибка.. ("Ошибка сценария.. продолжить выполнение сценариев на этой страницы ? да или нет варианты ответов..")
как от неё избавиться или как её скрыть ?
нельзя чтоб она появлялась !
дело не в программе, а во-первых в странице и в браузере..
Voland-791
11.04.2010, 11:38
Я хочу чтобы она убрала тольео то что я укажу (строчки,слова)
Я хочу чтобы она убрала тольео то что я укажу (строчки,слова)
1. В цикле пробегаешь по массиву (For, While)
2. Сравниваешь текущий эл. массива с эталоном (If ...(mass[i]=str , Pos(str,mass[i]) , i=номер строки) then)
3. Применяешь функции (Delete, или свои если удалить эл. массива)
+ / - эл. дин. массива (http://delphiworld.narod.ru/base/dyn_array_add_delete.html)
дело не в программе, а во-первых в странице и в браузере..
помоему я задал конкретный вопрос, а не спросил в чем дело..
я так понял никто не знает как убрать эту ошибку да ?
она появляется после нажатия буттона отвечающий за переход по ссылке.. пробывал даже сайт сменить, не помогает :\
axeee, forum.windowsfaq.ru/showthread.php?t=90695
или же попробуй погуглить на слова "Ошибка сценария IE" :)
SkyLine32
11.04.2010, 22:36
Скажите как мне создать папку в том каталоге, который выберет юзер?
http://s39.radikal.ru/i085/1004/29/b7ca3c6c497c.png
procedure TForm4.Button1Click(Sender: TObject);
var
fold: string;
begin
fold := shelltreeview1.SelectedFolder.PathName;
CreateDir(fold+'000');
end;
НЕ КАТИТ!
Скажите как мне создать папку в том каталоге, который выберет юзер?
http://s39.radikal.ru/i085/1004/29/b7ca3c6c497c.png
procedure TForm4.Button1Click(Sender: TObject);
var
fold: string;
begin
fold := shelltreeview1.SelectedFolder.PathName;
CreateDir(fold+'000');
end;
НЕ КАТИТ!
Почему не катит?
CreateDir(path+'\SnapShot');
Просто скорее всего у тебя в fold идет типа 'c:\temp'
для этого надо добавить '\' и каталог который хочешь создать.
P.s. Ccылка (http://www.festra.com/wwwboard/messages/3633.html)
SkyLine32
11.04.2010, 22:57
Почему не катит?
CreateDir(path+'\SnapShot');
Просто скорее всего у тебя в fold идет типа 'c:\temp'
для этого надо добавить '\' и каталог который хочешь создать.
Потому что папка создаётся сразу, юзеру же нет возможности при создании директории видеть эту папку и переименовать. Тоесть эффект должен быть такой: юзер жмет Создать папку, она должна в этом окне что на скрине появится и предложить её переименовать. Ну я думаю ты меня понял...
EndLeSSDre@M
11.04.2010, 23:00
Потому что папка создаётся сразу, юзеру же нет возможности при создании директории видеть эту папку и переименовать. Тоесть эффект должен быть такой: юзер жмет Создать папку, она должна в этом окне что на скрине появится и предложить её переименовать. Ну я думаю ты меня понял...
Для того, чтобы изменения показывались сразу есть Свойство AutoRefresh // по-умолчанию False.
Далее создаёшь новый каталог
NewFolder:=ShellTreeView1.Path+'\New Folder'; CreateDir(NewFolder);
или
ForceDirectories(NewFolder)
Потому что папка создаётся сразу, юзеру же нет возможности при создании директории видеть эту папку и переименовать. Тоесть эффект должен быть такой: юзер жмет Создать папку, она должна в этом окне что на скрине появится и предложить её переименовать. Ну я думаю ты меня понял...
function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData:
LPARAM): Integer; stdcall;
begin
if (uMsg = BFFM_INITIALIZED) then
SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData);
BrowseCallbackProc := 0;
end;
function GetFolderDialog(Handle: Integer; Caption: string; var strFolder:
string): Boolean;
const
BIF_STATUSTEXT = $0004;
BIF_NEWDIALOGSTYLE = $0040;
BIF_RETURNONLYFSDIRS = $0080;
BIF_SHAREABLE = $0100;
BIF_USENEWUI = BIF_EDITBOX or BIF_NEWDIALOGSTYLE;
var
BrowseInfo: TBrowseInfo;
ItemIDList: PItemIDList;
JtemIDList: PItemIDList;
Path: PAnsiChar;
begin
Result := False;
Path := StrAlloc(MAX_PATH);
SHGetSpecialFolderLocation(Handle, CSIDL_DRIVES, JtemIDList);
with BrowseInfo do
begin
hwndOwner := GetActiveWindow;
pidlRoot := JtemIDList;
SHGetSpecialFolderLocation(hwndOwner, CSIDL_DRIVES, JtemIDList);
{ return display name of item selected }
pszDisplayName := StrAlloc(MAX_PATH);
{ set the title of dialog }
lpszTitle := PChar(Caption); //'Select the folder';
{ flags that control the return stuff }
ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE ;
// ulFlags := ulFlags or BIF_NEWDIALOGSTYLE or BIF_RETURNONLYFSDIRS;
//ulFlags := ulFlags or BIF_RETURNONLYFSDIRS;
lpfn := @BrowseCallbackProc;
{ extra info that's passed back in callbacks }
lParam := LongInt(PChar(strFolder));
end;
ItemIDList := SHBrowseForFolder(BrowseInfo);
if (ItemIDList <> nil) then
if SHGetPathFromIDList(ItemIDList, Path) then
begin
strFolder := Path;
Result := True
end;
end;
if not GetFolderDialog(GetStdHandle(STD_OUTPUT_HANDLE), 'Выберите каталог', Path) then
в Path окажется выбор пользователя.
P.s. возможно понадобится uses ShlObj;
SkyLine32
11.04.2010, 23:13
EndLeSSDre@M, ок, а как сделать эффект чтобы после создании папки, сразу переходило на переименование директории, т.к. в твоём примере создаётся папка 'где то там'.
JnK, это сложно для меня )
EndLeSSDre@M, ок, а как сделать эффект чтобы после создании папки, сразу переходило на переименование директории, т.к. в твоём примере создаётся папка 'где то там'.
JnK, это сложно для меня )
А что тут сложного в программе сразу после {$R *.dfm} пишешь, выше указаный код:
uses ShlObj;
function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData:
LPARAM): Integer; stdcall;
...
end;
function GetFolderDialog(Handle: Integer; Caption: string; var strFolder:
string): Boolean;
....
end;
А кнопка выглядит так:
procedure TForm1.Button1Click(Sender: TObject);
var
path:string;
begin
if GetFolderDialog(GetStdHandle(STD_OUTPUT_HANDLE), 'Выберите каталог', Path) then
Showmessage(path);
end;
SkyLine32
11.04.2010, 23:39
JnK, это не то что мне надо (
SkyLine32, в плане кода?
Я как понял, тебе надо.
1. открылось окно выбора каталога
2. Пользователь нажал "Создать каталог", и он в выделенном создает под каталог
3. и предлагает ввести (исправить) имя (не отдельный окном), а прям там.
http://s001.radikal.ru/i196/1004/b2/7ff277e6e755.jpg
Может плохо гуглил, но насчет компонента:
Link 1 (http://programmersforum.ru/showthread.php?t=37390)
Link 2 (http://forum.vingrad.ru/forum/topic-245979/kw-переименовать-папку/view-all.html)
procedure TForm1.Button1Click(Sender: TObject);
begin
Path := tree.Path; // полный путь к выбранной в ShellTreeView папке
Name := tree.Selected.Text;// тут будет только имя выбранной папки
Dir := ExtractFileDir(p);//тут будет путь к выбранной папке без нее самой
// теперь как советовал Arigato
RenameFile(Path + '/' + Name, Path + '/' + 'Какое-то новое имя');
Tree.Refresh(Tree.Selected.Parent);
end;
DdoNbAsS
12.04.2010, 11:42
Приветствую всех кодеров,вот есть такой очень важный для меня вопрос я все облазил не нашёл ответа на него,моя дальнейшая судьба будет зависеть от вас в программировании потому что уже честно устал продвижение нету!
Вот я начну Решил я Научиться кодить,очень много думал,у меня есть интерес!Вот я Начал как Новичок с Паскаля,Потом думаю Делфи,Си,и так далее.
Но я не могу то толком начать решать задачи на паскале и делать примеры очень обидно я быстро его начал осваивать и уже много чему научился а примеры не получаются!
Вот скачал Много Книг,С книги беру пример любой и все ровно выбивает ошибку в паскале!
Вот пример с книги Первая программа.
4.2. Первая программа на Паскале Конечно, кроме оператора Write в Паскале есть еще много операторов. Но для начального понимания того, как устроена программа на Паскале, достаточно и его. Вот пример программы:
BEGIN
Write('Начали!');
Write(8+1);
Write(5-2)
END.
Должно получиться Начали!93
Я веду имел этим что при каждом примере с книг не получается с ответом как в книги числа разные бывают то не высчитает,или ошибку пишет.
Помоги Пожалуйста Надеюсь на Вашу помощь,
Может посоветовать Литературы!
Спасибо за рани
EndLeSSDre@M
12.04.2010, 12:12
Приветствую всех кодеров,вот есть такой очень важный для меня вопрос я все облазил не нашёл ответа на него,моя дальнейшая судьба будет зависеть от вас в программировании потому что уже честно устал продвижение нету!
Вот я начну Решил я Научиться кодить,очень много думал,у меня есть интерес!Вот я Начал как Новичок с Паскаля,Потом думаю Делфи,Си,и так далее.
Но я не могу то толком начать решать задачи на паскале и делать примеры очень обидно я быстро его начал осваивать и уже много чему научился а примеры не получаются!
Вот скачал Много Книг,С книги беру пример любой и все ровно выбивает ошибку в паскале!
Вот пример с книги Первая программа.
BEGIN
Write('Начали!');
Write(8+1);
Write(5-2)
END.
Должно получиться Начали!93
Я веду имел этим что при каждом примере с книг не получается с ответом как в книги числа разные бывают то не высчитает,или ошибку пишет.
Помоги Пожалуйста Надеюсь на Вашу помощь,
Может посоветовать Литературы!
Спасибо за рани
из всего написанного я так и не понял что требуется??? и кстати там точки с запятой после врайта не хватает))) поясни свой вопрос в 2х словах! и readln в конце не забывай добавлять чтоб результат посмотреть!
program vivod;
uses crt;
begin
write('Begin!');
write(8+1);
write(5-2);
readln;
end.
DdoNbAsS
12.04.2010, 12:16
из всего написанного я так и не понял что требуется??? и кстати там точки с запятой после врайта не хватает))) поясни свой вопрос в 2х словах!
Учюсь по книгам Паскалю примеры не могу выполнить с книги,То выпевает ошибка,или не сходиться с ответом в книги!
DdoNbAsS
12.04.2010, 12:26
из всего написанного я так и не понял что требуется??? и кстати там точки с запятой после врайта не хватает))) поясни свой вопрос в 2х словах! и readln в конце не забывай добавлять чтоб результат посмотреть!
program vivod;
uses crt;
begin
write('Begin!');
write(8+1);
write(5-2);
readln;
end.
Получилось Ура!Молодец!
Вот скажи почему в книге написано
По другому с ошибками?
Посоветуй хорошую книгу пожалуйста!
EndLeSSDre@M
12.04.2010, 12:29
Получилось Ура!Молодец!
Вот скажи почему в книге написано
По другому с ошибками?
Посоветуй хорошую книгу пожалуйста!
Учиться по книгам не сильно поможет... лучше искать задачи на паскале или самому придумывать, а потом в гугле искать функции которые тебе помогут... книг не посоветую.. так как сам не знаю...
И многое от книги зависит, может там другая версия паскаля... везде по разному. У меня Turbo Pascal 7.1 стоит... и то когда писал тебе эти строчки, даже не проверял на работоспособность((( это слишком легко... и ты так когда нить думать будешь)) так что учись на практике!
SkyLine32
12.04.2010, 16:32
JnK,
не работают эти два примера.
http://s56.radikal.ru/i152/1004/ab/318147428514.png
но спасибо за это.
fenixelite
12.04.2010, 16:45
DdoNbAsS, ты в конец каждой проги дописывай readln(что бы окошко не закрывалось сразу) или жми Alf+f5. И все отлично будет. А вообще учить по книгам не гуд
winlogon.exe
12.04.2010, 20:55
Можно отправлять зашифрованные гет запросы?
Как?
Надо отправить текст из мемо1 на электронную почту делаю так:
idmessage1.Body := memo1.Lines;
idmessage1.From.Text := 'получатель@mail.ru';
idmessage1.Recipients.Add;
idmessage1.Recipients.Items[0].Text := 'отправитель@mail.ru';
idmessage1.Subject := '+1akk' ;
idsmtp1.Host := 'mail.ru';
idsmtp1.Port := 25;
idsmtp1.Username := 'ящик отправителя' ;
idsmtp1.Password :='пароль от ящика';
idsmtp1.AuthenticationType :=atLogin;
IdSMTP1.Connect(10);
if IdSMTP1.Connected then
begin
IdSMTP1.Send(Idmessage1)
end;
IdSMTP1.Disconnect;
end;
Запускаю прогу, выпрыгивает ошибка connection closed gracefully что делать?
уже не надо нашёл видео урок
http://delphiexpert.ru/view_lesson.php?id=46
EndLeSSDre@M
12.04.2010, 21:32
элементы одномерного массива Т(К) получаются по формуле T(K)=tg(2K)-Kcos(K) где К-позиция элемента в массиве Т(К). Необходимо сформировать новый массив В(К) в котором элементы массива Т(К) стоящие на позиции кратной трем будут заменены средним арифметическим значением этих элементов
помогите решить пожалуйста
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,math;
var k,i:integer;
T,B:array[1..255] of real;
sum,sr:real;
begin
writeln('vvedite I');
readln(i);
for k:=1 to i do
begin
t[k]:=tan(2*k)-k*cos(k);
sum:=sum+t[k];
write(round(t[k]),' ');
end;
writeln;
sr:=sum/k;
writeln(round(sr));
for k:=1 to i do
begin
if k mod 3=0 then b[k]:=sr else b[k]:=t[k];
write(round(b[k]),' ');
end;
readln;
end.
и вопрос, среднее арифметическое элементов которые стоят на позиции кратной трем или всех элементов??? просто у меня среднее арифм всех элементов..
logger, это не ошибка, это сообщение, что предыдущее соединение завершено.
SMTP.Host:='smtp.mail.ru';
SMTP.Port:=25;
SMTP.Username:='ящик отправителя';
SMTP.Password:='пароль от ящика';
SMTP.AuthenticationType:=atLogin;
with IdMessage do
begin
From.Text := 'отправитель@mail.ru';
Recipients.EMailAddresses := 'получатель@mail.ru';
Subject := '1akk';
IdMessage.Body.Add('bla bla bla' + memo1.Lines);
end;
SMTP.Connect;
try
SMTP.Send(IdMessage);
finally
SMTP.Disconnect;';
Брось на форму: POP3; IdMessage; SMTP
EndLeSSDre@M спасибо большое
[stranger]
12.04.2010, 21:49
Можно отправлять зашифрованные гет запросы?
Как?
как ты себе представляешь шифрованный GET запрос? при том что он выглядит так:
GET /index.php?param1=abra¶m2=cadabra HTTP/1.1
Host: example.com
User-Agent: Mozilla 56.4 abra-cadabra ed
Referer: http://forum.antichat.ru/
Connection: close
и как его можно зашифровать?
ЗЫ: хз, мб тебе SSL нужен..
DdoNbAsS
13.04.2010, 00:16
DdoNbAsS, ты в конец каждой проги дописывай readln(что бы окошко не закрывалось сразу) или жми Alf+f5. И все отлично будет. А вообще учить по книгам не гуд
Ой спосибки,большое.
Ну тогда если не по книгам то с чего начинать то?:)
fenixelite
13.04.2010, 08:04
DdoNbAsS, нет, книга под рукой должна быть. Но лучше брать какие нибудь задачи и пробовать решать, заодно и вв гугле искать научишься. На intuit.ru курсы есть неплохие.
Подскажите авторизация вконтакте делаю так:
Http := TIdHTTP.Create(Self);
Data := TStringList.Create;
Data.Add('email='+Edit1.Text);
Data.Add('pass='+Edit2.Text);
Data.Add('expire=');
Data.Add('vk=');
StrPage := Http.Post('http://vkontakte.ru/login.php', Data);
WebBrowser1.Navigate('http://vkontakte.ru/apps.php');
Но веб браузер выводит не авторизованную страницу.
Подскажите авторизация вконтакте делаю так:
Http := TIdHTTP.Create(Self);
Data := TStringList.Create;
Data.Add('email='+Edit1.Text);
Data.Add('pass='+Edit2.Text);
Data.Add('expire=');
Data.Add('vk=');
StrPage := Http.Post('http://vkontakte.ru/login.php', Data);
WebBrowser1.Navigate('http://vkontakte.ru/apps.php');
Но веб браузер выводит не авторизованную страницу.
Ты авторизируешся через idhttp, а не через webbrowser.
Они между собой никак не взаимодействуют.
И вообще авторизация через инди не так делается.
fenixelite
13.04.2010, 10:25
logger, вконтакте вообще 3 авторизация вроде.
Vkontakte.ru/login.php
login.vk.com/?act=login
Vkontakte.ru/login.php
и потом в profile.php кидает
Вроде так
А что ни как не сделать, чтобы браузер был связан с IDHTTP и при нажатии на кнопку кидал уже на авторизованную страницу?
fenixelite
13.04.2010, 11:44
logger, ты напиши конкретно что ты хочешь? Делай все или через Idhttp или веббраузер.
Syntaxys
14.04.2010, 01:22
Есть ли в паскале директивы, отключающие режим проверки совместимости типов?
Проблема в следующем:
поле edit - Vvod.Text, в него вводится информация, по щелчку происходит проверка:
if strtofloat(Vvod.Text)>80 ... если в поле был введен текст появляется ошибка "Текст который был в Vvod.Text" is not a valid floating point value.
Нужно убрать отображение ошибки.
EndLeSSDre@M
14.04.2010, 01:25
Есть ли в паскале директивы, отключающие режим проверки совместимости типов?
Проблема в следующем:
поле edit - Vvod.Text, в него вводится информация, по щелчку происходит проверка:
if strtofloat(Vvod.Text)>80 ... если в поле был введен текст появляется ошибка
Нужно убрать отображение ошибки.
а зачем тебе убирать ошибку, если можно запретить ввод букв и символов?!?!?
Syntaxys
14.04.2010, 03:12
Вот так думаю решить
procedure TForm1.Edit1.KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0' .. '9':;
else Key:=Chr(0); {запрещенные символы не отображать}
end;
Рад буду увидеть способы проще если они есть.
EndLeSSDre@M
14.04.2010, 03:17
вот это в OnKeyPress() Edit'a
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var m: set of char;
begin
m := ['0'..'9'];
if ord(key) = 13 then edit2.SetFocus;
if not (key in m) then key := chr(0);
end;
или вот это в OnShow() формы
procedure TForm1.FormShow(Sender: TObject);
var oldlong: integer;
begin
oldlong := GetWindowLongA(edit1.Handle, GWL_STYLE);
SetWindowLongA(edit1.Handle, GWL_STYLE, oldlong or ES_NUMBER);
end;
суть будет одна и та же! пользуйся
crazyserega1994
14.04.2010, 18:45
Как использовать один и тот-же класс TidHTTP в 2 функциях? То-есть чтобы куки были одинаковые что в 1 функции, что в 2?
GhostOnline
14.04.2010, 21:01
Объявить его глобально, или объявить глобальным куки менеджер а в функциях просто привязыват его к идхттп
Xcontrol212
14.04.2010, 21:34
Задан текстовый файл, содержащий фрагмент программы на Object Pascal. Найти все статические методы и поместить их в файл, состоящий из записей следующей структуры: имя метода – атрибут доступа( public, protected или private) – класс. Файл должен быть отсортирован по именам методов.
понять не могу
Найти все статические методы и поместить их в файл, состоящий из записей следующей структуры: имя метода – атрибут доступа( public, protected или private) – класс.
program test;
var u:integer;
begin
procedure zzz(a:integer);
begin
a:=5;
end;
end.
http://gyazo.com/986f6f1d81c8b4683d85555fe9d78038.png
Гул говорит всё норм :confused:
GhostOnline
15.04.2010, 01:47
procedure zzz(var a:integer);
begin
a:=5;
end;
GhostOnline, неа, тоже самое
GhostOnline
15.04.2010, 01:50
program test;
var u:integer;
procedure zzz(var a:integer);
begin
a:=5;
end;
begin
zzz(u);
end.
аха, надо до бегина писать, работат
n1ghtstalker
15.04.2010, 08:37
аха, надо до бегина писать, работат
вообще лучше и до vara объявлять все процедуры,используемые модули само собой.
winlogon.exe
15.04.2010, 13:38
есть например текст:
dfwegtrhfgerg
nfgerggfhgergfh
ergegfgeffhgfh
efgehrgefgdfj5
56juklo67u45rg
gjm6hnm,n65h
нужно сделать чтобы после каждого логина вставлялся текст напрмиер "@ololo.ru" и в конце ;'+password+'
примерный результат:
dfwegtrhfgerg@ololo.ru;123
nfgerggfhgergfh@ololo.ru;555
ergegfgeffhgfh@ololo.ru;43ygh4
efgehrgefgdfj5@ololo.ru;34yger
56juklo67u45rg@ololo.ru;bb654f
gjm6hnm,n65h@ololo.ru;54yh7
подскажите как сделать на delphi))
EndLeSSDre@M
15.04.2010, 14:24
есть например текст:
dfwegtrhfgerg
nfgerggfhgergfh
ergegfgeffhgfh
efgehrgefgdfj5
56juklo67u45rg
gjm6hnm,n65h
нужно сделать чтобы после каждого логина вставлялся текст напрмиер "@ololo.ru" и в конце ;'+password+'
примерный результат:
dfwegtrhfgerg@ololo.ru;123
nfgerggfhgergfh@ololo.ru;555
ergegfgeffhgfh@ololo.ru;43ygh4
efgehrgefgdfj5@ololo.ru;34yger
56juklo67u45rg@ololo.ru;bb654f
gjm6hnm,n65h@ololo.ru;54yh7
подскажите как сделать на delphi))
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
n:string;
password:string;
begin
password:='ferfew';
assign(output,'output.txt');
reset(input,'input.txt');
while not eof(input) do
begin
readln(input,n);
append(output);
writeln(n,'@ololo.ru;',password);
close(output);
end;
close(input);
end.
пасс сделаешь рандомно... а так все норм робит
Nightmarе
15.04.2010, 18:36
Есть функция отправки GET запроса на хост через сокеты, мне нужно сделать её в бесконечном цикле, чтобы она постоянно слала на хост этот запрос.
Но проблема в том, что при реализации этого через библиотеку WinSock запросы успешно выполняются, но и + ко всему на компьютере открывается кучу соединений, в результате чего компьютер попросту намертво виснет.
Вот моя функция:
function fWSRecv():string;
var
hSocket: TSocket;
hHost: PHostEnt;
hAddr: TSockAddrIn;
hTimeout: TTimeVal;
samzapros,kuda:string;
begin
kuda:='localhost';
samzapros:='GET /log/ass.php' + #13#10 +
'Host: localhost' + #13#10 +
'User-Agent: Mozilla/5.0' + #13#10 +
'Accept: text/html' + #13#10 +
'Accept-Language: ru' + #13#10 +
'Accept-Charset: windows-1251' + #13#10 +
'Connection: close' + #13#10#13#10;
while true do begin
hSocket := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
hHost := gethostbyname(PChar(kuda));
hAddr.sin_family := PF_INET;
hAddr.sin_port := htons(80);
hAddr.sin_addr := pinaddr(hHost^.h_addr^)^;
hTimeout.tv_usec := 0;
hTimeout.tv_sec := mstimeout;
setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @hTimeout, sizeof(ttimeval));
connect(hSocket, hAddr, SizeOf(hAddr));
Send(hSocket, samzapros[1], length(samzapros), 0);
CloseSocket(hSocket);
end;
end;
Вызываю так:
var
ws:TwsaData;
begin
WSAStartup($101, ws);
fWSRecv;
и всё, куча соединений и т.д... вообще даже приблизительно не знаю, в каком месте у меня ошибка.
PS: тока просьба не предлогать боянистые темы с интервалом в минуту и т.д... цикл должен быть максимально быстрым, в этом смысл кода
n1ghtstalker
15.04.2010, 22:34
а пробовал с ц ограниченным циклом? :\ а то я даже и не знаю,по моему закрытие идёт а по всей видимости на практике не происходит.
[stranger]
15.04.2010, 23:47
и всё, куча соединений и т.д...
netstat в студию
Есть функция отправки GET запроса на хост через сокеты, мне нужно сделать её в бесконечном цикле, чтобы она постоянно слала на хост этот запрос.
Но проблема в том, что при реализации этого через библиотеку WinSock запросы успешно выполняются, но и + ко всему на компьютере открывается кучу соединений, в результате чего компьютер попросту намертво виснет.
Вот моя функция:
function fWSRecv():string;
var
hSocket: TSocket;
hHost: PHostEnt;
hAddr: TSockAddrIn;
hTimeout: TTimeVal;
samzapros,kuda:string;
begin
kuda:='localhost';
samzapros:='GET /log/ass.php' + #13#10 +
'Host: localhost' + #13#10 +
'User-Agent: Mozilla/5.0' + #13#10 +
'Accept: text/html' + #13#10 +
'Accept-Language: ru' + #13#10 +
'Accept-Charset: windows-1251' + #13#10 +
'Connection: close' + #13#10#13#10;
while true do begin
hSocket := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
hHost := gethostbyname(PChar(kuda));
hAddr.sin_family := PF_INET;
hAddr.sin_port := htons(80);
hAddr.sin_addr := pinaddr(hHost^.h_addr^)^;
hTimeout.tv_usec := 0;
hTimeout.tv_sec := mstimeout;
setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @hTimeout, sizeof(ttimeval));
connect(hSocket, hAddr, SizeOf(hAddr));
Send(hSocket, samzapros[1], length(samzapros), 0);
CloseSocket(hSocket);
end;
end;
Вызываю так:
var
ws:TwsaData;
begin
WSAStartup($101, ws);
fWSRecv;
и всё, куча соединений и т.д... вообще даже приблизительно не знаю, в каком месте у меня ошибка.
PS: тока просьба не предлогать боянистые темы с интервалом в минуту и т.д... цикл должен быть максимально быстрым, в этом смысл кода
Ты при отсылки данных указываешь Connection:Close, то есть после закрытия очередного - каждый раз создается новое соединение. Можно открыть сокет, отправив Connection:Keep Alive, а дальше отсылать Get запрос только.
Nightmarе, Pr0mo правильно говорит, добавь еще sleep и application.ProcessMessages.
heretic1990
16.04.2010, 14:57
в общем такая проблема:
делаю проверку на заполнение полей, и если в поле нет цифр, то выдаётся сообщение что поле не заполнено, если все поля заполнены то выдаётся соответствующее сообщение что "заполнено", но проблема в то что если все поля пусты и мы нажимаем на кнопку то вылетает ошибка. как избавиться от этого, ну или какие есть ещё варианты на проверку заполнения полей?
procedure TForm1.Button1Click(Sender: TObject);
begin
if not (Edit2.Text[1] in ['0'..'9']) then
begin
ShowMessage('Не заполнено поле 2');
Edit2.SetFocus;
if not (Edit1.Text[1] in ['0'..'9']) then
begin
ShowMessage('Не заполнено поле 1');
Edit1.SetFocus;
if not (Edit3.Text[1] in ['0'..'9']) then
begin
ShowMessage('Не заполнено поле 3');
Edit3.SetFocus;
end;
end;
end
else
begin
ShowMessage('заполнено');
end
end;
GhostOnline
16.04.2010, 15:38
Ошибка из-за того что ты обращаешься к несуществующему символу:
Edit2.Text[1]
Прежде чем обращаться к эдиту сделай проверку наподобие
if Edit2.Text = '' then
begin
ShowMessage('Идите в жопу, поля снача заполнять надо!');
exit;
end;
и так перед обращением к каждому эдиту
Можно еще проверять по Length(Edit2.Text) = 0
Ах да, если тебе нужно чтобы в полях было количество символов не больше чем N то выстави свойства у эдитов MaxLength равным N
Nightmarе
16.04.2010, 15:46
Ты при отсылки данных указываешь Connection:Close, то есть после закрытия очередного - каждый раз создается новое соединение. Можно открыть сокет, отправив Connection:Keep Alive, а дальше отсылать Get запрос только.
Увы, не помогает, и менял его, и вообще убирал сократив до:
send_buf:='GET '+p+' HTTP/1.0'#13#10'Host: '+h+#13#10#13#10#13#10;
Этот тоже не канает... крайне странно, но код глючный 100%, ибо тестировал на всех трёх системах, XP, Vista, Win7, везде одно и тоже, а на XP компьютер вообще падает.
Всем привет! У меня такой вопрос...
Есть оператор мобильной связи IDC. Так же у них на серваке есть сайт для отправления СМС-Сообщений на телефоны подключенные к их компании... Вот ссылка: http://sms.idknet.com... Отсюда я и собираюсь отправлять СМС спам...
Немного подумав как это проще сделать я нашел самый оптимальный вариант, и перешел к действиям...
1) Снифером HTTP Analyzer 5.0 отсканировал post запрос, который отправляется на файлик отбработчика: http://sms.idknet.com/sms.php
Оказалось, что при отправке в обработчик поступают следующие параметры:
prefix - Код оператора
txtAddr - Номер телефона
sum - Оставшееся колличество символов
txtSM - Текст СМС Сообщения
code - Код Капчи
Submit2.x - Абсцысса кнопки "Отправить" (Оставить по умолчанию 35)
Submit2.y - Ордината кнопки "Отправить" (Оставить по умолчанию 15)
Submit2 - Надпись на кнопке (Оставить по умолчанию Отправить)
Если все это дело отправлять Get запросом, то выходит что то вроде такова: http://sms.idknet.com/sms.php?prefix=777&txtAddr=12345&sum=160&txtSM=%C2%E2%E5%E4%E8%F2%E5+%F1%EE%EE%E1%F9%E5%ED% E8%E5.+%C4%EB%E8%ED%E0+%F1%EE%EE%E1%F9%E5%ED%E8%FF +%ED%E5+%E4%EE%EB%E6%ED%E0+%EF%F0%E5%E2%FB%F8%E0%F 2%FC+160+%F1%E8%EC%E2%EE%EB%EE%E2.&code=&Submit2.x=35&Submit2.y=15&Submit2=%CE%F2%EF%F0%E0%E2%E8%F2%FC
Но после нескольких эксперементов, убедился, что Get запросом тут не обойтись, пишет, что незаполнены поля...
Я стал юзать Post...
КОД:
procedure TForm1.Button2Click(Sender: TObject);
var data: tstringlist;
ssylka,STR: string;
begin
idhttp1.HandleRedirects:=true;
STR:=idhttp1.Get('http://sms.idknet.com');
ssylka:='http://sms.idknet.com/sms.php';
data:=tstringlist.Create;
data.Add('code='+edit3.text);
data.Add('prefix='+st);
data.Add('Submit2=Отправить');
data.Add('Submit2.x=27');
data.Add('Submit2.y=6');
data.Add('sum=160');
data.Add('txtAddr='+edit1.text);
data.Add('txtSM='+edit2.text);
str:=idhttp1.Post(ssylka, data);
showmessage(idhttp1.URL.URI);
if pos('class="bad"', STR) <> 0 then
label5.Caption:='Сообщение неотправленно!'
else
label5.Caption:='Сообщение отправленно!';
end;
И функция парса:
function tform1.pars(T_, ForS, _T:string):string;
var a, b: integer;
begin
Result:='';
if (T_ = '') or (ForS='') or (_T = '') then
exit;
a:=pos(T_,ForS);
if a = 0 then exit
else
a:=a+length(T_);
fors:=copy(ForS, a, length(ForS) - a + 1);
if b > 0 then
result:=copy(ForS,1,b-1);
end;
Все вродебы не плохо, но осталась одна нерешенная проблема!...(( Что делать с капчей...
Подумав, я не стал заморачиваться, и решил просто сделать так, чтобы капча выводилась в программу, и я сам ее каждый раз вводил...
Код примерно такой:
procedure TForm1.Label3Click(Sender: TObject);
var _Captcha : TJPEGImage;
F_body : TMemoryStream;
id, a:string;
MyIdHTTP : TIdHTTP;
begin
MyIdHTTP:=TIdHTTP.Create(Self);
F_body := TMemoryStream.Create;
_Captcha:=TJPEGImage.Create;
try
MyIdHTTP.Get('http://sms.idknet.com/code.php', F_body);
F_body.Seek(0, soFromBeginning);
_Captcha.LoadFromStream(F_body);
Image1.Picture.Assign(_Captcha);
Image1.Width:=_Captcha.Width;
Image1.Height:=_Captcha.Height;
finally
F_body.Free;
_Captcha.Free;
end;
end;
Сама капча находится на главной страничке http://sms.idknet.com, но вытаскивается туда она со странички http://sms.idknet.com/code.php
Все вроде бы замечательно, капчу программа в себя вытаскивает нормально, но когда я ее ввожу (и ввожу правильно) всеравно отправка не идет, и пишет что капча введена неверно!
Сначала не мог понять в чем прикол, потом догнал... Капча та каждый раз при обновление меняется...
Я получается вытаскиваю капчу одну, ввожу ее, а отом при Post запросе вытаскивается страница целиком вместе с капчей, следовательно и капча меняется...
Что мне делать в таком случае? Подскажите пожалуйста!!!
slesher
idhttp + idcookiemanager + jpeg
у мну работает, можешь предпоследнию строчку расскоментировать, что бы смотреть резултат...
procedure TForm1.Button1Click(Sender: TObject);
var
post: tstringlist;
captchatext, result: string;
ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
post:=tstringlist.Create;
http.Get('http://sms.idknet.com/code.php', ms);
ms.SaveToFile('captcha_temp.jpeg');
ms.Clear;
captcha.Picture.LoadFromFile('captcha_temp.jpeg');
InputQuery('Captcha','Enter captcha',captchatext);
post.Add('prefix=777');
post.Add('txtAddr=13212');
post.Add('txtSM=test');
post.Add('sum=155');
post.Add('code='+captchatext);
result:=http.Post('http://sms.idknet.com/sms.php',post);
if AnsiPos('ОТПРАВЛЕНО', result) > 0 then
showmessage('Отправлено') else showmessage('ХУЙ!');
//showmessage(result);
//cookie.CookieCollection.Clear;
ms.Free;
end;
[stranger]
16.04.2010, 21:14
Увы, не помогает, и менял его, и вообще убирал сократив до:
send_buf:='GET '+p+' HTTP/1.0'#13#10'Host: '+h+#13#10#13#10#13#10;
Этот тоже не канает... крайне странно, но код глючный 100%, ибо тестировал на всех трёх системах, XP, Vista, Win7, везде одно и тоже, а на XP компьютер вообще падает.
нифига код не глючный! попробуй не себя ддосить, тогда все ок будет :)
для того чтобы убить апач(под виндой) достаточно нескольких секунд флуда этой функцией из-под 20 потоков, при том что флуд идет не на поиск а на на индекс
Nightmarе
17.04.2010, 00:48
']нифига код не глючный! попробуй не себя ддосить, тогда все ок будет :)
для того чтобы убить апач(под виндой) достаточно нескольких секунд флуда этой функцией из-под 20 потоков, при том что флуд идет не на поиск а на на индекс
В этом случае всё практически тоже самое, за исключением маленькой детали, а именно, соединений открывается примерно 100 штук, но выше уже не поднимается, то есть добегает до 100, и на этой планке стабильно висит.
Проверяю через Outpost, ну а на сколько это систему грузит, я к сожалению в Win7 на глаз определить не могу, но помоему всё равно не катит.
В этом случае всё практически тоже самое, за исключением маленькой детали, а именно, соединений открывается примерно 100 штук, но выше уже не поднимается, то есть добегает до 100, и на этой планке стабильно висит.
Проверяю через Outpost, ну а на сколько это систему грузит, я к сожалению в Win7 на глаз определить не могу, но помоему всё равно не катит.
1)потоки не тру?
2)Это бы я вынес перед циклом.
hHost := gethostbyname(PChar(kuda));
hAddr.sin_family := PF_INET;
hAddr.sin_port := htons(80);
hAddr.sin_addr := pinaddr(hHost^.h_addr^)^;
hTimeout.tv_usec := 0;
hTimeout.tv_sec := mstimeout;
я делфи не очень понимаю, но так вроде верно.
Nightmarе
17.04.2010, 01:03
1)потоки не тру?
2)Это бы я вынес перед циклом.
hHost := gethostbyname(PChar(kuda));
hAddr.sin_family := PF_INET;
hAddr.sin_port := htons(80);
hAddr.sin_addr := pinaddr(hHost^.h_addr^)^;
hTimeout.tv_usec := 0;
hTimeout.tv_sec := mstimeout;
я делфи не очень понимаю, но так вроде верно.
ну мне бы сначало с одним потоком разобраться, а уже потом многопоточность, а так по логике 10 потоков в 10 раз больше нагрузку сделают, и вместо 100 соединений будут 1000.
По поводу перед циклом, это без разницы.
А зачем тебе
setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @hTimeout, sizeof(ttimeval));
ты же ничего не recv'ишь
Nightmarе
17.04.2010, 02:10
А зачем тебе
setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @hTimeout, sizeof(ttimeval));
ты же ничего не recv'ишь
убрав его, тоже ничего не меняется. + модифицировал код, понапихав всевозможных проверок, но толку тоже нету.
убрав его, тоже ничего не меняется. + модифицировал код, понапихав всевозможных проверок, но толку тоже нету.
Если проблема что виснет комп, попробуй запустить ее отдельным потоком, а в основном добавь цикл из Application.ProcessMesssages (не помню как пишется, ну ты понял)
alexey-m
17.04.2010, 12:58
Здравствуйте, может кто-нибудь помочь хорошим примером или описанием, как работать с SSL, без инди и тп вещами)?
Вообщем сделал чекер ОД, всё работает, всё хорошо, хочу усовершенствовать, сделать не одиночную проверку акка, а сразу список.
Существуют такие строки:
Data.Add('st.email='+Edit1.Text); // вписываю на сайт одноклассников логин
Data.Add('st.password='+Edit2.Text); // вписываю пароль
Как объединить мне в одно Мемо всё вместе в формате - логин:пароль, и чтобы всё это выводило в другое мемо (в данном случае Валид и Невалид)
Сама программа:
http://forum.antichat.ru/thread196772.html
Заранее спасибо, если что пишите в асю 428810406
Вообщем сделал чекер ОД, всё работает, всё хорошо, хочу усовершенствовать, сделать не одиночную проверку акка, а сразу список.
Существуют такие строки:
Data.Add('st.email='+Edit1.Text); // вписываю на сайт одноклассников логин
Data.Add('st.password='+Edit2.Text); // вписываю пароль
Как объединить мне в одно Мемо всё вместе в формате - логин:пароль, и чтобы всё это выводило в другое мемо (в данном случае Валид и Невалид)
Сама программа:
http://forum.antichat.ru/thread196772.html
Заранее спасибо, если что пишите в асю 428810406
1. Цикл (While, For)
2. Парсинг данных: Copy, Pos, DEL.
объединить:
memo1.Lines.Add(Edit1.Text+':'+Edit2.Text);
Прогоняй в цикле список и при помощи пункта 2, подставляй логин и пароль, проблема может возникнуть только много запросов с 1 ИП, так что надо прокси, и наверное небольшие задержки между посылками запросов.
Здравствуйте, может кто-нибудь помочь хорошим примером или описанием, как работать с SSL, без инди и тп вещами)?
Может это:
Тык (http://www.cyberguru.ru/cpp-sources/network/kak-sdelat-ssl-zapros.html)
InfectedM
18.04.2010, 01:31
Как равномерно распределить 15 потоков по memo1
Чтобы каждый поток работал с 1\15 частью memo1
PS количество потоков и количество строк заранее не известно.
В голову приходит одна чушь:(
Объясните хотя бы на словах плиз)
Как равномерно распределить 15 потоков по memo1
Чтобы каждый поток работал с 1\15 частью memo1
PS количество потоков и количество строк заранее не известно.
В голову приходит одна чушь:(
Объясните хотя бы на словах плиз)
Читать или записывать?
Если читать, просто делишь N строк на 15 и потом считываешь с нужных позиций. типа 30 строк
1 поток с 1 строки
2 поток с 3 строки и т.д.
Кол-во элементов на 1 поток = N div M
ну можно еще
N mod M = если не равно 0, то раскидать по 1 эл. на поток, тогда надо делать сдвиг позиции. у следующего потока, но можно оставить и так, тогда остаток заберет последний поток.
С Записью вроде все это бессмысленно.
Как написать Ddos атаку на Delphi
Что и как посылать?
AlexTheC0d3r
18.04.2010, 09:33
Как написать Ddos атаку на Delphi
Что и как посылать?
А в гугл или сначала почитать что такое DDoS, не?
Si{R}ius
18.04.2010, 11:38
имеются несколько файлов f1, f2, f3.
Procedure OpenFile1;
begin
assignfile(f1,'f1.dat');
if FileExists('f1.dat')
then reset(f1)
else rewrite(f1);
end;
Как сделать так, чтобы не писать три процедуры для открытия файлов? Что это за тип f1 ? Какого типа должна быть переменная a , чтобы a:=f1 ?
n1ghtstalker
18.04.2010, 11:46
имеются несколько файлов f1, f2, f3.
Procedure OpenFile1;
begin
assignfile(f1,'f1.dat');
if FileExists('f1.dat')
then reset(f1)
else rewrite(f1);
end;
Как сделать так, чтобы не писать три процедуры для открытия файлов? Что это за тип f1 ? Какого типа должна быть переменная a , чтобы a:=f1 ?
можно в одной процедуре всё описать, только место f1 подставлять f2 и f3 соответсвенно.
f1 - .dat (стандартный тип файлов для паскаля)
как ты переменной собрался присваивать файл?
ты вообще с файлами работал?-_-
assign (f1,'f1.dat') - те ты ассоцируешь ключевому слову f1 - файл f1.dat
Si{R}ius
18.04.2010, 12:33
Я хочу вместо
Procedure OpenFile(nomer: byte);
begin
case Nomer of
1: begin assignfile(f1,'f1.dat');
if FileExists('f1.dat') then reset(f1)
else rewrite(f1); end;
2: begin assignfile(f2,'f2.dat');
if FileExists('f2.dat') then reset(f2)
else rewrite(f2); end;
3: begin assignfile(f3,'f3.dat');
if FileExists('f3.dat') then reset(f3)
else rewrite(f3); end;
end;
end;
получить нечто похожее на
Procedure OpenFile(a: ff);
begin
case a of
f1: str:='f1.dat';
f2: str:='f2.dat';
f3: str:='f3.dat';
end;
assignfile(a,str);
if FileExists(str) then reset(a)
else rewrite(a);
end;
я не знаю, как это правильно реализовать, так как раньше не сталкивался с этим.
подскажите как очистить одномерный массив от пустых значений(array of string)
EndLeSSDre@M
18.04.2010, 13:53
На сколько я помню, в VB это я делал так: находим пустой элемент, его удаляем, и смещаем все идущие за ним элементы на 1 пункт и т.д. думаю и на дельфи так же будет! пробуй
for i:=1 to n do begin
if a[i]:='' then do
begin
for t:=i+1 to n do
begin
a[t-1]:=a[t];
end;
n:=n-1;
end;
end;
EndLeSSDre@M
18.04.2010, 14:27
Подскажите, где трабла? проблема в том что если прокся не рабочая, то выдает ошибку сокета 10060 типа превышено время ожидания.... пробовал по всякому как видите, от этой ошибки не избавился.... надо чтобы если прокся не рабочая, он удалял ее из списка и переходил дальше проверять!
var i,port: integer;
ProxyList,params,Presponseres:tstrings;
proxy,por,ip:string ;
begin
ProxyList:=tstringlist.Create;
ProxyList.LoadFromFile('Proxy.txt');
params:=TStringList.Create;
Presponseres:=TStringList.Create;
if ProxyList.Text=''
then begin
ShowMessage ('Список пуст');
exit;
end;
for i:= 0 to ProxyList.Count-1 do
begin
Proxy:=ProxyList.Strings[i];
ip:=getip(Proxy);
por:=getport(Proxy);
port:=StrToInt(por);
showmessage(proxy);
try
IdHTTP1.ProxyParams.ProxyServer:=ip;
IdHTTP1.ProxyParams.ProxyPort:=port;
IdHttp1.ReadTimeout:=10000;
IdHTTP1.Get('http://getmyip.ru/');
except
ProxyList.Delete(i);
ProxyList.SavetoFile('Proxy.txt');
ProxyList.free;
end;
end;
end;
ну че блин... никто помочь не может чтоль(((( всем помогаю, а мне никто(((
Я хочу вместо
Procedure OpenFile(nomer: byte);
begin
case Nomer of
1: begin assignfile(f1,'f1.dat');
if FileExists('f1.dat') then reset(f1)
else rewrite(f1); end;
2: begin assignfile(f2,'f2.dat');
if FileExists('f2.dat') then reset(f2)
else rewrite(f2); end;
3: begin assignfile(f3,'f3.dat');
if FileExists('f3.dat') then reset(f3)
else rewrite(f3); end;
end;
end;
получить нечто похожее на
Procedure OpenFile(a: ff);
begin
case a of
f1: str:='f1.dat';
f2: str:='f2.dat';
f3: str:='f3.dat';
end;
assignfile(a,str);
if FileExists(str) then reset(a)
else rewrite(a);
end;
я не знаю, как это правильно реализовать, так как раньше не сталкивался с этим.
Попробуй вместо f1,f2,f3 использовать массив :)
тоесть примерно так:
var
f:array[1..3] of textfile;
Procedure OpenFile(a: dword);
begin
case a of
1: str:='f1.dat';
2: str:='f2.dat';
3: str:='f3.dat';
end;
assignfile(f[a],str);
if FileExists(str) then
reset(f[a])
else
rewrite(f[a]);
end;
можно так:
var
f:array[1..255] of textfile;
Procedure OpenFile(i: dword);
begin
str:='f'+inttostr(i)+'.dat';
assignfile(f[i],str);
if FileExists(str) then
reset(f[i])
else
rewrite(f[i]);
end;
p.s. inttostr - перевод числа в строку (Delphi)
Подскажите, где трабла? проблема в том что если прокся не рабочая, то выдает ошибку сокета 10060 типа превышено время ожидания.... пробовал по всякому как видите, от этой ошибки не избавился.... надо чтобы если прокся не рабочая, он удалял ее из списка и переходил дальше проверять!
....
ну че блин... никто помочь не может чтоль(((( всем помогаю, а мне никто(((
Вот, ошибка не вылетает, если программу запускать отдельно, тоесть не под средой разработки, проверял на этом коде.
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTP1.ProxyParams.ProxyServer:='114.127.246.36';
IdHTTP1.ProxyParams.ProxyPort:=8080;
try
IdHTTP1.Get('http://ya.ru');
showmessage('Рабочий');
except
showmessage('Не рабочий');
// удаляем из списка
end;
end;
Меня смутили эти строки, при ошибке сохранить и освободить список? если тебе надо только удалить ненужный эл. списка, и продолжить цикл.
ProxyList.SavetoFile('Proxy.txt');
ProxyList.free;
FALTONICK
18.04.2010, 16:02
только начал изучение дельфи нужна функция поиска по определенному сайту. т.е. на сайте есть поиск к примеру http://photoshop.demiart.ru/ там справа функция поиска как эту функция перекинуть на дельфи? чтобы получилось типо:
[ это страка поиска ]
[кнопка поиск]
только начал изучение дельфи нужна функция поиска по определенному сайту. т.е. на сайте есть поиск к примеру http://photoshop.demiart.ru/ там справа функция поиска как эту функция перекинуть на дельфи? чтобы получилось типо:
[ это страка поиска ]
[кнопка поиск]
1. Смотришь исходный код страницы, находишь форму поиска.
2. Кидаешь на форму в программе Edit и Button
3. при нажатии Button выполнять запрос.
+ Сниффер в помощь
q=текст для поиска
+много скрытых полей
EndLeSSDre@M
18.04.2010, 16:24
Вот, ошибка не вылетает, если программу запускать отдельно, тоесть не под средой разработки, проверял на этом коде.
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTP1.ProxyParams.ProxyServer:='114.127.246.36';
IdHTTP1.ProxyParams.ProxyPort:=8080;
try
IdHTTP1.Get('http://ya.ru');
showmessage('Рабочий');
except
showmessage('Не рабочий');
// удаляем из списка
end;
end;
Меня смутили эти строки, при ошибке сохранить и освободить список? если тебе надо только удалить ненужный эл. списка, и продолжить цикл.
ProxyList.SavetoFile('Proxy.txt');
ProxyList.free;
ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
Ошибка вылетает когда программа запущена под Delphi?
EndLeSSDre@M
18.04.2010, 16:29
Ошибка вылетает когда программа запущена под Delphi?
Всегда! если как отдельным приложением то такая ошибка: "List index of bounds (3)" и дальше если идти, то всегда ошибку выдает!
Из-за того, что ты запускаешь в режиме отладчика (под средой разработки) вылетает 10060 ошибка, она пропадет как только приложение будет запущено отдельно.
насчет List index of bounds (3), проверяй список, возможно кол-во эл.-ов не соотвествует циклу, по идеи ты же удаляешь их из списка, а проходы остаются.
Другими словами F7 и смотри где ошибка.
EndLeSSDre@M
18.04.2010, 17:12
Из-за того, что ты запускаешь в режиме отладчика (под средой разработки) вылетает 10060 ошибка, она пропадет как только приложение будет запущено отдельно.
насчет List index of bounds (3), проверяй список, возможно кол-во эл.-ов не соотвествует циклу, по идеи ты же удаляешь их из списка, а проходы остаются.
Другими словами F7 и смотри где ошибка.
о_О спасибо большое! работает!
GhostOnline
18.04.2010, 19:26
ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
Что за народ то а?
Это НЕ ошибка, это ИСКЛЮЧЕНИЕ.
А цель его - проинформировать тебя что время истекло. А ты должен, исходя из этого обработать исключение.
ЗЫ если ты хочешь отлаживать программу и чтобы сообщений об этом исключении не появлялось - добавь в список игнорируемых исключений. И можешь отлаживать спокойно. Это делается в опциях отладчика.
при работе с антикапчей, есть 2 кнопки
1 получает капчу и сохраняет в файл:
form2.idhttp1.Request.CustomHeaders.Text:='Cookie: '+cookie;
streamresponse:=TMemoryStream.Create;
d:='http://127.0.0.1/captcha.php?key='+kapchaid;
form2.idhttp1.Get(d,streamresponse);
streamresponse.SaveToFile('rseserv.jpeg');
после чего кнопка отправки на антикапчу:
form2.edit3.Text:='recognizing...';
form2.Button1.Enabled:=false;
form2.edit3.Text:=recognize('rseserv.jpeg',form2.e dit1.Text,false,false,false,0,0);
form2.Button1.Enabled:=true;
и функция recognize.
function recognize(filename: string; apikey: string; is_phrase: boolean; is_regsense: boolean; is_numeric: boolean; min_len: integer; max_len: integer): string;
var
ftype,tmpstr,captcha_id: String;
i: integer;
http: TIdHTTP;
multi: Tidmultipartformdatastream;
begin
if FileExists(filename)=false then begin result:='ERROR: file not found'; exit; end;
ftype:='image/pjpeg';
if strpos(Pchar(filename),'jpg')<>nil then ftype:='image/pjpeg';
if strpos(Pchar(filename),'gif')<>nil then ftype:='image/gif';
if strpos(Pchar(filename),'png')<>nil then ftype:='image/png';
multi:=Tidmultipartformdatastream.Create;
multi.AddFormField('method','post');
multi.AddFormField('key',apikey);
multi.AddFile('file',filename,ftype);
if is_phrase=true then multi.AddFormField('phrase','1');
if is_regsense=true then multi.AddFormField('regsense','1');
if is_numeric=true then multi.AddFormField('numeric','1');
if min_len>0 then multi.AddFormField('min_len',inttostr(min_len));
if max_len>0 then multi.AddFormField('max_len',inttostr(max_len));
http:=TIdHTTP.Create(nil);
tmpstr:=http.Post('http://antigate.com/in.php',multi);
http.Free;
captcha_id:='';
if strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
if strpos(Pchar(tmpstr),'OK|')<>nil then captcha_id:=AnsiReplaceStr(tmpstr,'OK|','');
if captcha_id='' then result:='ERROR: bad captcha id';
for i:=0 to 20 do
begin
Application.ProcessMessages;
sleep(5000);
http:=TIdHttp.Create(nil);
tmpstr:=http.Get('http://antigate.com/res.php?key='+apikey+'&action=get&id='+captcha_id);
http.Free;
if strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
if strpos(Pchar(tmpstr),'OK|')<>nil then
begin
result:=AnsiReplaceStr(tmpstr,'OK|','');
exit;
end;
Application.ProcessMessages;
end;
result:='ERROR_TIMEOUT';
end;
так вот, когда первый раз отсылаю, всё работает, а когда идёт вторая попытка через определённый промежуток времени, выдаёт ошибку файл не может быть перезаписан т.к. он используется.... что делать?
EP']~~~
что делать?
function recognize(filename: string; apikey: string; is_phrase: boolean; is_regsense: boolean; is_numeric: boolean; min_len: integer; max_len: integer): string;
var
ftype,tmpstr,captcha_id: String;
i: integer;
http: TIdHTTP;
multi: Tidmultipartformdatastream;
begin
if FileExists(filename)=false then begin result:='ERROR: file not found'; exit; end;
ftype:='image/pjpeg';
if strpos(Pchar(filename),'jpg')<>nil then ftype:='image/pjpeg';
if strpos(Pchar(filename),'gif')<>nil then ftype:='image/gif';
if strpos(Pchar(filename),'png')<>nil then ftype:='image/png';
multi:=Tidmultipartformdatastream.Create;
multi.AddFormField('method','post');
multi.AddFormField('key',apikey);
multi.AddFile('file',filename,ftype);
if is_phrase=true then multi.AddFormField('phrase','1');
if is_regsense=true then multi.AddFormField('regsense','1');
if is_numeric=true then multi.AddFormField('numeric','1');
if min_len>0 then multi.AddFormField('min_len',inttostr(min_len));
if max_len>0 then multi.AddFormField('max_len',inttostr(max_len));
http:=TIdHTTP.Create(nil);
tmpstr:=http.Post('http://antigate.com/in.php',multi);
http.Free;
multi.free;
captcha_id:='';
if strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
if strpos(Pchar(tmpstr),'OK|')<>nil then captcha_id:=AnsiReplaceStr(tmpstr,'OK|','');
if captcha_id='' then result:='ERROR: bad captcha id';
for i:=0 to 20 do
begin
Application.ProcessMessages;
sleep(5000);
http:=TIdHttp.Create(nil);
tmpstr:=http.Get('http://antigate.com/res.php?key='+apikey+'&action=get&id='+captcha_id);
http.Free;
if strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
if strpos(Pchar(tmpstr),'OK|')<>nil then
begin
result:=AnsiReplaceStr(tmpstr,'OK|','');
exit;
end;
Application.ProcessMessages;
end;
result:='ERROR_TIMEOUT';
end;
функцию recognize замени на эту
как узнать вес html страницы через indy ?
или как сделатьв условии, чтобы проверялось на пустой ответ или пустую страницу?(весит 0кб)
fenixelite
18.04.2010, 20:42
3n0t,
я бы так сделал
s:=idHTTP.Get(link);
if s<>'' then ........ else ..........
Хотя может можно как то по другому ))
я бы так сделал
ну и зря, в любом случае ты получишь хеддеры от сервера (если компьютер конечно же подкл. к сети)
(если же не подкл. -> программа высветит ошибку окном (в данном случае (т.е. то что в этих скобках) спасает только try...except))
fenixelite
18.04.2010, 20:57
Хотя да, не подумал ) Плохой вариант :)
GhostOnline
18.04.2010, 21:28
как узнать вес html страницы через indy ?
var
s : string;
size : integer;
...............
s := IdHttp.Get(URL);
size := Length(s)*SizeOf(Char);
Необходимо тут написать прожку, определяющую подключение юсб-девайса к компу. Открыл гугль, поискал, нашел вот это:
http://www.programmersforum.ru/showthread.php?t=10295
(см 4й пост)
Сделал соотв модуль, поисправлял ошибки, скомпилил.
Так вот, как теперь этой штукой пользоваться? Мне нужно, чтобы в переменной лежало значение, подключено или нет. Ну, или в ином легкодоступном месте.
stepashka_
19.04.2010, 20:59
подскажите как програмно изменить файл хостс на нужный мне текст
fenixelite
19.04.2010, 21:08
stepashka_ Вот на граберз почитай :
http://grabberz.com/showthread.php?p=112486
Хоть бы сказал на каком языке тебе надо!Вот пример,но рекомендую использовать относительный пусть,найди папку windows присвой ей переменную и в бой!)
Кстати на винде 7 и висте ты не сможешь поменять хост!Но думаю ты знаешь почему)
Var hostfiles:TextFile;
begin
AssignFile(hostfiles,'C:\paskal\mywrite\1.txt');
{$I-}
Append(hostfiles);
if IOResult<>0 then
begin
{$I-}
Rewrite(hostfiles);
{$I+}
if IOResult<>0 then
begin
Exit;
end;
stepashka_
19.04.2010, 21:42
Хоть бы сказал на каком языке тебе надо!
В названии темы нет ЯП ?
Твой код полный бред :)
В названии темы нет ЯП ?
Твой код полный бред :)
Полный бред?отвечаешь за слова?Если не понимаешь в программирование то не суй нос,а во вторых синтаксис паскаля и делфи слегка отличается,по этому я и просил уточнить компелятор!
PS Ты что не понял что вместо "C:\paskal\mywrite\1.txt" нужно указать пусть к файл хосту!
stepashka_
19.04.2010, 22:04
отвечаешь за слова?
Отвечать тебе будут крутые пацанчики на районе.
PS Ты что не понял что вместо "C:\paskal\mywrite\1.txt" нужно указать пусть к файл хосту!
а если файл хостс не на диске C ?
а если файл хостс не на диске C ?
Прочитай мой первый пост!Я же написал что лучьше не использовать постоянные пути,а найти папку виндов и прировнять ее к переменно!и тогда все равно на каком диске у жертвы винда,хоть на Q:\ ))
PS давай тут не будем флудить,ты спаросил как я ответил!Если есть еще какие то вопросы то стучи в асю 34568один2
InfectedM
20.04.2010, 17:57
с JS XML итд знаком плохо...
Не могу понять что за API на сайтах ?
вот к примеру http://www.lastfm.ru/api/show?service=303
Как их использовать?
вижу какой-то artist.addTags Не понятно что с ним делать у куда отправлять)))
Max-nnov
20.04.2010, 18:25
Люди Добрые Помогите!
очень хочу написать свой фейк(для добрых дел))...очень хочу....помогите пожалуйста...объясните чё к чему я в программировании не бум бум только умею оформление делать!помогите,объясните плиз....ICQ 584780128
в долгу не останусь!не игнорьте пожалуйста
dark-klin
20.04.2010, 20:21
Ребята срочно помогите решить задание из лабороторки в Pascal ABC с использованием оператора while.
1 заданиеhttp://ipicture.ru/upload/100420/KbymdZWn6W.jpg
2 задание http://ipicture.ru/upload/100420/60vVby20TQ.jpg
stepashka_
20.04.2010, 21:58
дельфи ставлю новую инди
[Ошибка] IdGlobalProtocols.pas(412): Undeclared identifier: 'TIdTextEncoding'
[Фатальная Ошибка] IdGlobalProtocols.pas(566): Internal error: U1294
Эти ошибки появляются при компиляции IndyProtocols70.dpk
Подскажите в чём трабла
Вот эта строка выделяется красным
function ContentTypeToEncoding(const AContentType: string; AQuoteType: TIdHeaderQuotingType): TIdTextEncoding;
stepashka_
Сообственно самое простое это:
procedure TForm1.Button1Click(Sender: TObject);
var
SysdirP: PChar;
begin
SysDirP := StrAlloc(MAX_PATH);
GetSystemDirectory(SysDirP, MAX_PATH);
Memo1.Lines.SaveToFile(SysDirP+'\drivers\etc\hosts ');
end;
:)
SkyLine32
21.04.2010, 00:58
Ребята срочно помогите решить задание из лабороторки в Pascal ABC с использованием оператора while.
1 заданиеhttp://ipicture.ru/upload/100420/KbymdZWn6W.jpg
2 задание http://ipicture.ru/upload/100420/60vVby20TQ.jpg
1 задание
uses crt;
var
x,i,k,n:integer;
p,l:real;
begin
clrscr;
writeln('Vvedite N');
readln(n);
writeln('Vvedite X');
readln(x);
l:=1;
p:=1;
while i<= n do
begin
i:=i+1;
while k<=i do
begin
k:=k+1;
l:=l*ln(x);
end;
p:=p*l;
l:=1;
end;
writeln('p=',p:3:3);
readln;
end.
2 задание
uses crt;
var
a1,a2,a3,a4,k,i:integer;
t:real;
begin
a1:=1;
a2:=1;
a3:=1;
a4:=1;
clrscr;
writeln('Vvedite k');
readln(k);
i:=1;
while i<= 3 do
begin
a1:=a1*i;
i:=i+1;
end;
i:=1;
while i<= 8 do
begin
a2:=a2*i;
i:=i+1;
end;
i:=1;
while i<=6 do
begin
a3:=a3*i;
i:=i+1;
end;
i:=1;
while i<= k do
begin
a4:=a4*i;
i:=i+1;
end;
t:=a1*a2/a4-a3;
writeln('t=',t:3:3);
readln;
end.
stepashka_
21.04.2010, 09:10
090808
а с инди не знаешь что?
Мне нужно найти значение в массиве, как in_array в PHP
Как я понял в дельфи такого нет, надо писать свою функцию, а вот не получается... было около 5 ошибок, справился но 6 меня убила, не понимаю чего оно хочет :(
function find_in_array(inarray : array of string; find : string) : Integer;
var i: Integer;
begin
for i:=1 to 100 do
begin
if EmptyStr(inarray[i])=true then Result := 0;
end;
end;
[Error] irc.pas(68): Missing operator or semicolon
:o
========
И ещё... Может можно как-то не вбивать точное кол-во элементов, ну в смысле не
users: array[1..100] of string;
а
users: array[1..?] of string;
а потом какойнить count() считать количество, чоб не прогонять все 100 всёвремя :o
s0l_ir0n
21.04.2010, 13:29
function find_in_array(inarray : array of string; find : string) : boolean;
var i: Integer;
begin
Result:=false;
for i:=1 to length(inarray) do
begin
if inarray[i]=find
then Result := True;
end;
end;
EndLeSSDre@M
21.04.2010, 13:38
И ещё... Может можно как-то не вбивать точное кол-во элементов, ну в смысле не
users: array[1..100] of string;
а
users: array[1..?] of string;
а потом какойнить count() считать количество, чоб не прогонять все 100 всёвремя :o
попробуй так:
massiv: array of integer;
begin
setLength(massiv, <нужный размер>);
или так:
const
N = 5;
ArrStr : array[1..N] of String
незнаю, может можно попробовать ввод N сделать до начала тела программы... надо будет попробовать
Да вона код s0l_ir0n'а работат вродебе...
БЛЯТЬ! Что опять нетак?!
users[length(users)+1] := Nick;
[Error] irc.pas(116): Constant expression violates subrange bounds
и users[] := Nick; тоже не хочет
GhostOnline
21.04.2010, 14:11
users[length(users)+1] := Nick;
У тебя массив имеет длину length(например 10) а ты хочешь присвоить значение
элементу с индексом length + 1(например 11) - т.е. несуществующему элементу
И у тебя кстати вроде статически массив объявлен
няяя... Ну а как мне заполнять массив... Знач надо прогонять от 1 до length и смареть если значение пустое, знач туда писать, а как пустое смареть? empty() нету вродебе...
GhostOnline
21.04.2010, 14:18
Проверяем все ли заполнены:
for i := 0 to high(users) do
begin
if users[i] = '' then
............
end;
Заполняем:
for i := 0 to high(users) do
begin
users[i] := .............
end;
подскажите как правильно создавать и очищать динамический массив
я в начале цикла объявляю длину массива так setlength(массив, длина); а в конце цикла пытаюсь очистить массив так setlength(массив, 0); но при переходе в следующий цикл старые данные остаются и к ним добавляются новые данные
по некоторым советам пробовал еще в конце цикла делать так Finalize(массив); но результат без изменений
function count_array(array1 : array of string) : integer;
var i: Integer;
begin
for i:=1 to length(array1) do
begin
if array1[i] = '' then
begin
Result := i;
Break;
end;
end;
end;
возвращает мне 1 хотя array1[1] := 'ololo'; :o
должен 2 вернуть
====
млё... хрень какая-то... В программе array[1] = ololo а в функции = ''
чтоб руки повырывало создателям этого delphi :mad:
GhostOnline
21.04.2010, 14:32
Все правильно, у тебя функция и вовращает- : integer;
var i: Integer;
Result := i;
Что же ты хотел? Как она вернет сроку сели она у тебя возвращает целое число?
Напиши что КОНКРЕТНО тебе нужно от функции
чтоб руки повырывало создателям этого delphi
LOL
Я тебе показал как правильно
for i := 0 to High(users)
Гоу вставлять код на pastebay.com
users[count_array(users)] := Nick;
count_array(users);
ShowMessage(users[count_array(users)]);
count_array(users);
функция такая
function count_array(array1 : array of string) : integer;
var i: Integer;
begin
for i:=1 to length(array1) do
begin
if array1[i] = '' then
begin
Result := i;
ShowMessage(IntToStr(i)+':'+array1[i]);
Break;
end;
end;
end;
Выдаёт следующие месаги:
http://gyazo.com/c5d24e2c0cf569466c104b8678bc7f3e.png
http://gyazo.com/c5d24e2c0cf569466c104b8678bc7f3e.png
http://gyazo.com/c5d24e2c0cf569466c104b8678bc7f3e.png
http://gyazo.com/4afdb81273a0f40bf39bca9a70ecc07e.png
http://gyazo.com/c5d24e2c0cf569466c104b8678bc7f3e.png
Это как так... array[1] = Ponchik но всёравно оно 1 возвращает, да ещё и само говорит что там ничего нет :mad:
ебе показал как правильно
for i := 0 to High(users)
High = length
по крайней мере и то и то возвращает 50 да и не в этом трабла
>Что же ты хотел? Как она вернет сроку сели она у тебя возвращает целое число?
нахрен мне строка, мне надо число 2 чтоб вернуло, потомучто array[1] = 'Ponchik' знач не 1 надо возвращать, а 2
==============================
==============================
Чтоб было понятнее:
users[1] := 'ТУТ ЕСТЬ СТРОКА СУКА!';
count_array(users);
говорит
http://gyazo.com/6abe7e4ac03c4499a4fd3339b9ace3ba.png
Я ничё непонимаю
GhostOnline
21.04.2010, 14:48
users[count_array(users)] := Nick;
ShowMessage(users[count_array(users) - 1]);
ведь ты же уже изменил массив
У меня все работает:
procedure TMainForm.Button4Click(Sender: TObject);
var users : array of string;
function count_array(array1 : array of string) : integer;
var i: Integer;
begin
for i:=1 to length(array1) do
begin
if array1[i] = '' then
begin
Result := i;
Break;
end;
end;
end;
begin
SetLength(users, 10);
users[count_array(users)] := 'Ponchik'; ShowMessage(users[count_array(users)- 1]);
end;
Последння строка выдает сообщение с твоим ником, если убрать - 1 то пустое, что и правильно так как
users[2] := '';
[stranger]
21.04.2010, 14:49
if array1[i] = '' then
begin
Result := i;
ShowMessage(IntToStr(i)+':'+array1[i]);
Break;
end;
если я правильно понял у тебя при попадании на пустой элемент массива result`у присваивается значение.. попробуй в else обнулять result
и первый элемент массива 0, а не 1..
да, массив я изменил
users: array[1..50] of string;
такчто начинается с 1 а не с 0
Да и даже если с 0, я присваиваю [1] а оно его невидет
Я тут подумал, может я строкой "array of string" в функции обнуляю массив, но просто array
function count_array(array1 : array) : integer;
не работает, гвоорит
[Error] irc.pas(73): 'OF' expected but ')' found
Пойду пасмарю find_in_array работает ваще или нет :confused:
[stranger]
21.04.2010, 14:56
function count_array(array1 : array of string; f: string) : integer;
var i: Integer;
begin
for i := 0 to length(array1) - 1 do
begin
if array1[i] = f then
begin
Result := i;
Break;
end
else result := 0;
end;
end;
так что ли?
var arr: array[0..10] of string;
begin
arr[0] := 'q';
arr[1] := 'a';
arr[2] := '';
arr[3] := 'd';
showmessage(inttostr(count_array(arr,'a')));
выдает 1..
[stranger], да не, мне подсчитать надо кол-во заполненых элементов в массиве
function test_array(somearray : array of string) : boolean;
begin
ShowMessage(somearray[1]);
Result := True;
end;
users[1] := 'fhruthghgfh';
test_array(users);
http://gyazo.com/547973193d0a3810460931f069d1993f.png
массивы разные ваще получается... :confused:
[stranger]
21.04.2010, 15:00
function count_array(array1 : array of string) : integer;
var i: Integer;
begin
Result := 0;
for i := 0 to length(array1) - 1 do
if array1[i] <> '' then inc(Result);
end;
выводит количество непустых элементов массива
AlexTheC0d3r
21.04.2010, 15:02
Ponchik: вот правильней функция, т.к. границы массива не даны сначала
function count_array(array1: array of string): integer;
var
i: Integer;
begin
for i := Low(array1) to High(array1) do
begin
if array1[i] = '' then
begin
Result := i;
ShowMessage(IntToStr(i) + ':' + array1[i]);
Break;
end;
end;
end;
при том, что максимальное значение i будет являться 49 =\
т.е. когда ты записал array[1]:='1234123123'
то в функции это значение будет под индексом 0
GhostOnline
21.04.2010, 15:04
Ты передаешь в функцию динамический массив, отсчет в нем идет с нуля !!
function test_array(somearray : array of string) : boolean;
begin
ShowMessage(somearray[0]);
Result := True;
end;
users[1] := 'fhruthghgfh';
test_array(users);
я о том-же
Когда я писал, твоего поста не было еще :)
Пончик если работаешь со списками строк то лучше использовать TstringList. В нем сеть и поиск строки, и ассоциатывные спикси можно задавать. Возможностей много в общем.
AlexTheC0d3r
21.04.2010, 15:05
Ты передаешь в функцию динамический массив, отсчет в нем идет с нуля !!
function test_array(somearray : array of string) : boolean;
begin
ShowMessage(somearray[0]);
Result := True;
end;
users[1] := 'fhruthghgfh';
test_array(users);
я о том-же
т.е. когда ты записал array[1]:='1234123123'
то в функции это значение будет под индексом 0
Какого хера О_о Я ему указываю 1 почему он в 0 записывает
================
Юзаю функцию AlexTheC0d3r
count_array(users);
users[1] := 'ras';
count_array(users);
users[2] := 'dva';
count_array(users);
users[3] := 'tri';
count_array(users);
выдаёт месаги
0:
1:
2:
3:
Считает, но какое значение там - невидет :o
Если сделать
http://gyazo.com/1798dede00323e0067d7aac8afada57d.png
вот... хрень какая-то :mad:
==========
ыть, туплю... if array1[i] = '' then... естествено оно значение мне выдавать небудет :D
Рабоооотааееееттт
/me ПЛЯСКЕ ПЛЯСКЕ!!!
Всем по +5
но я вернусь
мля Пончик, кому я говорил что индексация с нуля идет? =\
мля Пончик, кому я говорил что индексация с нуля идет? =\
Ну в проге с 1 а в функциях с 0 и в проге надо после функции +1 делать, откуда я мог знать что тут такое извращение :o
И ещё... Как узнать делится-ли чисто без остатка или нет?
Ну типа % в пыхе
Хотя и сам догадываюсь if (Round(i/3) = i/3)
fenixelite
21.04.2010, 17:14
Ponchik ты точно извращенец :D :D
if i mod 3 = 0 :)
Voland-791
21.04.2010, 17:19
Нужен исходник для компиляции из memo в *.exe файл возможно ли его найти??
[stranger]
21.04.2010, 18:45
Нужен исходник для компиляции из memo в *.exe файл возможно ли его найти??
нет!
ЗЫ: brcc32.exe
при условии что мемо находится в Notepad`е :rolleyes:
stepashka_
21.04.2010, 18:58
Дельфи.
Подскажите какая indy лучше 7 или 10?
[stranger]
21.04.2010, 19:38
Дельфи.
Подскажите какая indy лучше 7 или 10?
учи winsock и не мучайся..
stepashka_
21.04.2010, 19:47
']учи winsock и не мучайся..
чем он лучше?
[stranger]
21.04.2010, 21:13
буквально ВСЕМ!
да, использовать сложнее, но это окупается стабильностью, скоростью работы и полным контролем работы с сетью..
GhostOnline
21.04.2010, 21:27
да, использовать сложнее, но это окупается стабильностью, скоростью работы и полным контролем работы с сетью..
Не поверишь но и инди в хороших руках стабильна и быстра. А полный контроль редко нужен. но я с тобой согласен что новичкам нужно советовать винсок, пока они с ним промучаются у меня будет меньше конкурентов :D
Сам-то используешь его? Компрессию траффа прикрутил (от наличия которой ой как сильно зависит скорость)?
Voland-791
21.04.2010, 21:46
']нет!
ЗЫ: brcc32.exe
при условии что мемо находится в Notepad`е :rolleyes:
точней чтобы можно было сохранить исходник который лежит в мемо в .exe
так.... уберите детей от монитора
for i:=1 to 20 do mmo1.Text := mmo1.Text+inttostr(Random(100));
запускаем прогу 5 раз, результат:
1)03862027673116374284778452991367732
2)03862027673116374284778452991367732
3)03862027673116374284778452991367732
4)03862027673116374284778452991367732
5)03862027673116374284778452991367732
ВЫЕ**ТЬ РАЗРАБОВ ДЕЛЬФИ!!!!! ЗАЧЕМ НАЗЫВАТЬ ФУНКЦИЮ "Random" ЕСТЬ ЭТО НЕ Random
Называйте бл**ь NotRandom и никаких проблем, а так пол часа еба**и и выяснения почему прога не работает, ведь нельзя догадаться что функция "Random" на самом деле выводит заранее приготовленые числа
============
Мне сказале чо перед Random надо писать Randomize
Где логика?! Нельзя это было в Random прописать?!
А перед showMessage(); ненадо там случайно showMessagez; писать? А? Или перед 1+1 ненадо 1+1z писать? а?
Пи***сы разрабы
astonilya
21.04.2010, 22:25
так.... уберите детей от монитора
for i:=1 to 20 do mmo1.Text := mmo1.Text+inttostr(Random(100));
запускаем прогу 5 раз, результат:
1)03862027673116374284778452991367732
2)03862027673116374284778452991367732
3)03862027673116374284778452991367732
4)03862027673116374284778452991367732
5)03862027673116374284778452991367732
ВЫЕ**ТЬ РАЗРАБОВ ДЕЛЬФИ!!!!! ЗАЧЕМ НАЗЫВАТЬ ФУНКЦИЮ "Random" ЕСТЬ ЭТО НЕ Random
Называйте бл**ь NotRandom и никаких проблем, а так пол часа еба**и и выяснения почему прога не работает, ведь нельзя догадаться что функция "Random" на самом деле выводит заранее приготовленые числа
============
Мне сказале чо перед Random надо писать Randomize
Где логика?! Нельзя это было в Random прописать?!
А перед showMessage(); ненадо там случайно showMessagez; писать? А? Или перед 1+1 ненадо 1+1z писать? а?
Пи***сы разрабы
вот
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
BitBtn1: TBitBtn;
Image1: TImage;
Image2: TImage;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
function RandomPwd(PWLen: integer): string;
// таблица символов, используемых в пароле
const StrTable: string =
'ABCDEFGHIJKLMabcdefghijklm' +
'0123456789' +
'NOPQRSTUVWXYZnopqrstuvwxyz';
var
N, K, X, Y: integer;// проверяем максимальную длину пароля
begin
if (PWlen > Length(StrTable)) then K := Length(StrTable)-1
else K := PWLen;
SetLength(result, K); // устанавливаем длину конечной строки
Y := Length(StrTable); // Длина Таблицы для внутреннего цикла
N := 0; // начальное значение цикла
while N < K do begin // цикл для создания K символов
X := Random(Y) + 1; // берём следующий случайный символ
// проверяем присутствие этого символа в конечной строке
if (pos(StrTable[X], result) = 0) then begin
inc(N); // символ не найден
Result[N] :=
StrTable[X]; // теперь его сохраняем
end;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
cPwd: string;
begin
cPwd := RandomPwd(9);
edit1.Text:=cPwd;
end;
end.
EndLeSSDre@M
21.04.2010, 22:29
так.... уберите детей от монитора
for i:=1 to 20 do mmo1.Text := mmo1.Text+inttostr(Random(100));
запускаем прогу 5 раз, результат:
1)03862027673116374284778452991367732
2)03862027673116374284778452991367732
3)03862027673116374284778452991367732
4)03862027673116374284778452991367732
5)03862027673116374284778452991367732
ВЫЕ**ТЬ РАЗРАБОВ ДЕЛЬФИ!!!!! ЗАЧЕМ НАЗЫВАТЬ ФУНКЦИЮ "Random" ЕСТЬ ЭТО НЕ Random
Называйте бл**ь NotRandom и никаких проблем, а так пол часа еба**и и выяснения почему прога не работает, ведь нельзя догадаться что функция "Random" на самом деле выводит заранее приготовленые числа
============
Мне сказале чо перед Random надо писать Randomize
Где логика?! Нельзя это было в Random прописать?!
А перед showMessage(); ненадо там случайно showMessagez; писать? А? Или перед 1+1 ненадо 1+1z писать? а?
Пи***сы разрабы
угу, полная хня)))
randomize;
for i:=1 to 20 do mmo1.Text := mmo1.Text+inttostr(Random(100));
будет генерить как я и сказал)
2astonilya че за хню ты написал???О_О
stepashka_
21.04.2010, 22:51
']буквально ВСЕМ!
да, использовать сложнее, но это окупается стабильностью, скоростью работы и полным контролем работы с сетью..
дай плиз линки что почитать про него...
astonilya
21.04.2010, 23:27
угу, полная хня)))
randomize;
for i:=1 to 20 do mmo1.Text := mmo1.Text+inttostr(Random(100));
будет генерить как я и сказал)
2astonilya че за хню ты написал???О_О
генератор случайных комбинаций из букв и цифр, можно зделать отьлко цифры...там уже готовая программа
[stranger]
21.04.2010, 23:42
дай плиз линки что почитать про него...
у slesh`а отличные статейки.. где-то на форуме есть
2 EndLeSSDre@M
генератор случайных комбинаций из букв и цифр, можно зделать отьлко цифры...там уже готовая программа
randomize; for i:=1 to 20 do mmo1.Text := mmo1.Text+inttostr(Random(100));
гм... уже подзабывать стал паскаль, но тут только генератор случайных цифр с переводом их в текстовое значение, притом вывод будет произведен нечитабельный как для программы так и для пользователя.
Chr Конвертирует целое число в символ
randomize; for i:=1 to 20 do mmo1.Text := mmo1.Text+' '+chr(Random(208)+48); вот так будет правельней.
2 stepashka_ - хорошая прога(на сайте тоже поиск есть) delphiworld.narod.ru -там небольшие примеры и статьи сортированные по тематикам - и главное нормальные примеры
EndLeSSDre@M
22.04.2010, 00:59
генератор случайных комбинаций из букв и цифр, можно зделать отьлко цифры...там уже готовая программа
буквы говоришь, тогда куда проще будет просто создать массив с буквами и символами, и потом уже рандомно выбирать по ключам буквы... куда проще будет! и меньше кода
к предыдущему моему сообщению: astonilya ссори не так прочел сообщение
EndLeSSDre@M
randomize; for i:=1 to 20 do mmo1.Text := mmo1.Text+' '+chr(Random(80)+48); - будет генерировать латинские буквы во всех регистрах + цифры
(ссори за неоформленность)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot