Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3

Модерирует : ShIvADeSt

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

kalkin

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как сделать авторизацию на http  
вот с таким хедером:  
===================================
GET /client/images/1.gif HTTP/1.0
Accept: */*
Referer: http://192.168.0.1/client/client.php
Accept-Language: ru
Cookie: какие-то куки
If-Modified-Since: Sat, 22 Nov 2006 19:18:01 GMT; length=43
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Host: 192.168.0.1
Authorization: Basic что-то=)
Connection: Keep-Alive
===============================
 
При этом приходиться постоянно через раз 6 иногда больше, править куки
 
Код:
========================================
idhttp1.Request.BasicAuthentication:=true;
idhttp1.Request.Username:='name';
idhttp1.Request.Password:='pass';
str:=de.Get('http://192.168.0.1/client/client.php');
да еще в свойствах Request в CustomHead указываю куки
без них авторизация не проходит...
========================================
 
Вопрос:
Как выполнить авторизацию не меняя руками постоянно куки?

Всего записей: 56 | Зарегистр. 19-05-2006 | Отправлено: 18:21 04-10-2007
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mauar

Цитата:
PCTS1.hHandle

Это хендл окна, а не процесса.
Процесс у тебя выполняется в Chars.Play. Т.к. тип этого объекта (Chars) не известен, то разговор слепого с глухим о красоте заката я вести не буду.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 09:40 05-10-2007
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Это хендл окна, а не процесса.  
Процесс у тебя выполняется в Chars.Play. Т.к. тип этого объекта (Chars) не известен, то разговор слепого с глухим о красоте заката я вести не буду.

 
К форме подключен MS Agent  Джин, Мерлин,  Собачка, Скрепка и т.д. Может помнишь раньше автоматически с советами и диалогами вылазил  
в MS Office 97  при загрузке ворда или экселя!?
 
 Так -вот,  этот агент ходит по моей форме и проводит виртуалную экскурсию, показывая возможности программы, на форме установлен PageControl с 4-мя вкладками. Агент, вернее код  должен по окончания рассказывания агента переключить на следующую вкладку.
 
Код private , кстати тут по моему тоже ошибка в прописывании комманды персонажа,  
при прописывании комманды Chars компилятор выдает ошибку, я написал Char    но вроде все работает нормально.

Код:
 
private
{ Private declarations }
Req: IAgentCtlRequest;{Будет хранить текущее действие персонажа}
Chars: IAgentCtlCharacterEx;{Хранит сам персонаж для обращения к нему}
Char:  IAgentCtlCommandsEx; {Хранит комманды персонажа}
 

 
 
Код FormShow формы:

Код:
 
procedure TBase.FormShow(Sender: TObject);
begin
Application.OnHint:=ShowHint;
{----------------------------Загружаем агента---------------------------------------}
Agent1.Characters.Load('MyAgent', 'Genie.acs');
Chars:= Agent1.Characters.Character('MyAgent') as IAgentCtlCharacterEx;
{-----------------------------------------------------------------------------------}
 Chars.Set_LanguageID($419);   // Выбираем язык агента - Русский
 
{----------------Сюда задаем команды меню советника ---------------------------------}
 
 Chars.Commands.Add('Test', '&Test', 1, 1, True);
 Chars.Commands.Add('Экскурсия', '&Экскурсия', 4, 1, True);
  Chars.Commands.Add('Выход из программы', '&Выход из программы', 1, 1, True);
 
{--------------------При загрузке формы агент появляется и произносит вступительную речь---------------------------------------------------------------}
 
Req:=Chars.MoveTo(1150,620,1);  
 Req:=Chars.Show(0);
 Chars.Play('RestPose');     // кстати, пытаюсь тут прописать "Reg:=" возникает ошибка, скорее всего я не правильно прописал Private  
 Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=86\ что то говорит','');
 Chars.Play('Blink');
 Chars.Play('Blink');
 Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=86\ опять что то говорит' ,'')
 Chars.Play('Greet');
 Chars.Speak ('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=86\Благодарю Вас, за внимание. '+
 ' Жду Ваших приказаний...!!!', '');
 Chars.Stop(Req);
 end;
 
 
{----------------------------действия при ннажатии Экскурсия-----------------------------------------}
 
 begin
 If Cmd.Name = 'Экскурсия' Then begin
Chars.MoveTo(400,550,1);
end; end;
 
 begin
If Cmd.Name = 'Экскурсия' Then begin
 PageControl1.ActivePage:= TabSheet2 ;    // Вот тут должно ити на вкладку 2, в конце прописан такой же код, но с переходом на вкладку 4
end; end;                                                            // он вместо этой команды переходит на последнюю вкладку и выполняет все следующие действия
                                                                           
 begin
If Cmd.Name = 'Экскурсия' Then begin     // переидя на TabSheet 4, вместо верхней команды TabSheet2  
 Chars.Stop(Req);                                           // он начинает выполнять это и все ниже следующие действия
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\что то сказал','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Play('GestureRight');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\опять что то сказал','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.MoveTo(340,550,1);
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Play('GestureLeft');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.MoveTo(360,150,1);
end;  end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Play('Explain');
end;  end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Play('GestureRight');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Play('GestureLeft');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал..','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then  begin  
Chars.MoveTo(800,150,1);
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then  begin
Chars.Play('GestureLeft');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin  
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.MoveTo(300,45,1);
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Play('GestureRight');
 end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin  
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\ говорит','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.MoveTo(300,45,1);
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then  begin  
Chars.Play('GestureLeft');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then  begin  
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\говорит','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then  begin  
Chars.MoveTo(500,45,1);
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin  
Chars.Play('GestureLeft');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\говорит','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.MoveTo(500,45,1);
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin  
Chars.Play('GestureLeft');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin  
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\говорит','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Play('Greet');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin  
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\ '+
 ' К которой и относится Ваш покорный слуга "Джин"  ...','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin
Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\ '+
 ' А сейчас,  я, переиду, к следующей под программе"  ...','');
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin                                          // тут он спускается к вкладке
Chars.MoveTo(300,670,1);
end; end;
 
Begin
If Cmd.Name = 'Экскурсия' Then begin                                        // тыкает рукой, делая вид что переключает вкладку
Chars.Play('GestureRight');
end; end;
 
// в принципе если в этом месте прописать sleep (5000) то он будет делать все верхние действия, а переключиться только через 5000 мл.сек.
// может в этом месте прописать команду white и указать в ней ожидания выполнения пред последней команды (верхней команды от этого текста)?
 
Begin
If Cmd.Name = 'Экскурсия' Then begin                                     // вот она эта роковая команда переключающая вкладку 4
PageControl1.ActivePage:= TabSheet4;                                    // которая переключается в самом начале
end; end;
 
end;
end.
 


Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 13:33 05-10-2007
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуй так:
Chars.Wait(Chars.Play('GestureRight'));
 
Потом попробуй с Visible поиграться в цикле.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 17:29 05-10-2007
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Попробуй так:  
Chars.Wait(Chars.Play('GestureRight'));  
 
Потом попробуй с Visible поиграться в цикле.

Так тоже пробовал.
С Visible ?! - как именно ?

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 20:26 05-10-2007
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
while xxx.visible do sleep(300);
 
где xxx это некоторый объект из агента. С агентом не работал, так что только внешнее восприятие.  Судя по гуглу еще есть State, тоже можно попробовать анализировать в цикле.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 21:34 05-10-2007
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
while xxx.visible do sleep(300);  
 
где xxx это некоторый объект из агента. С агентом не работал, так что только внешнее восприятие.  Судя по гуглу еще есть State, тоже можно попробовать анализировать в цикле.

 Дружище благодарю, мне человек еще показал, но что то не работает,
вот код:

Код:
 
If Cmd.Name = 'Экскурсия' Then begin
  req := Chars.MoveTo(400,550,1);
  while (req.status = 4) or (req.status = 2) do
    application.processmessages;
 
  PageControl1.ActivePage:= TabSheet2;
 
  Chars.Stop(Req);                                           // он начинает выполнять это и все ниже следующие действия
  Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\что то сказал','');
  Chars.Play('GestureRight');
  Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\опять что то сказал','');
 
  //... и т.д. ...
 
  req := Chars.Play('GestureRight');
  while (req.status = 4) or (req.status = 2) do
    application.processmessages;
 
  PageControl1.ActivePage:= TabSheet4;                                    // которая переключается в самом начале
end; // if cmd.name = 'Экскурсия'
 

 
А что про state , если мож объясни плиз

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 23:55 05-10-2007 | Исправлено: mauar, 02:57 06-10-2007
Armag3000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем, подскажите как на Delphi запустить процесс и заставить его использовать более одного ядра процессора?

Всего записей: 20 | Зарегистр. 17-02-2006 | Отправлено: 09:33 08-10-2007
relictus

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Оптимизация по времени выполнения. Посоветуйте быструю реализацию загрузки JPEG из потока в битмап. Что-то типа  
Bmp := TIEBitmap.Create;
Jpeg := TFilestream.Create(JpegFN, fmOpenRead);;
Bmp.LoadFromJPEGStream(Jpeg);  
.......
PS Без использования модуля Jpeg!

Всего записей: 3780 | Зарегистр. 19-04-2005 | Отправлено: 11:53 08-10-2007 | Исправлено: relictus, 13:52 08-10-2007
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Armag3000
Можно разным потокам указывать предпочитаемый процессор для выполнения:
SetThreadIdealProcessor.
Есть еще такое понятие, как Thread affinity - это механизм разрешения для процессов и потоков использовать те или иные процессоры, там функции  SetProcessAffinityMask (для процесса), SetThreadAffinityMask (для потока).

----------
... не это главное ...

Всего записей: 832 | Зарегистр. 30-01-2002 | Отправлено: 17:59 08-10-2007
antonn2

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Винда сама разберется, куда сунуть тред (TThread), достаточно его создать и делать часть расчетов в нем.

Всего записей: 97 | Зарегистр. 13-11-2006 | Отправлено: 19:23 08-10-2007
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен компонент, по функционалу схожий с ListView, но чтобы была возможность отображать сетку при установленном свойстве vsReport (для Дельфи 7)

Всего записей: 3147 | Зарегистр. 29-09-2005 | Отправлено: 22:49 08-10-2007
9628



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну мой вопрос совсем прост, думаю, на него ответит любой тут.
 
В школе мы проходили какой-то язык программирования. Он мне понравился простотой оформления пользовательского интерфейса. Там все кнопки, окна, поля ввода и прочие штучки делались с помощью конструктора (взял кнопку, перенёс куда надо, увеличил-уменьшил, дал название). Далее все элементы связывались между собой кодом.
 
Что за язык был - не знаю. Но думаю, что это и был delphi. Это действительно так?
 
Нужно делать совсем простенькие программы. И не хочется заморачиваться из-за интерфейса, как, например, в MapBasic (кто программировал, тот поймёт меня).
 
Это про дельфи или про что?
 
ещё один вопрос. С каким из этих языков схож синтаксис Delphi?
1. VBA
2.javascript
3.С++
4.Turbo Pascal 7
 
Спасибо.

Всего записей: 190 | Зарегистр. 25-11-2005 | Отправлено: 23:43 08-10-2007
antonn2

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
9628
последний вопрос это из какого нибудь теста "по инфрматике"? )

Всего записей: 97 | Зарегистр. 13-11-2006 | Отправлено: 00:46 09-10-2007
Arvur



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
9628

Цитата:
с помощью конструктора (взял кнопку, перенёс куда надо, увеличил-уменьшил, дал название)

Этот подход называется RAD (Rapid Application Development), сейчас таких сред достаточно много.  

Цитата:
В школе мы проходили какой-то язык программирования

Весь вопрос, в каком году это было. Если в 90х, то скорее всего Delphi или PowerBuilder. Второе название могу путать.

Цитата:
С каким из этих языков схож синтаксис Delphi?  

Delphi является прямым потомком Turbo Pascal.
 
antonn2
Не надо... флуда

Всего записей: 2111 | Зарегистр. 18-01-2002 | Отправлено: 01:04 09-10-2007
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz
А чем DrawGrid не подходит?

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 10:55 09-10-2007
HekTo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь работал в Delphi.NET из CodeGear RAD Studio ? Я правильно понял, что там больше нельзя создавать Windows Forms Application ? А если можно, то как ?
В диалоге выбора проектов его нет, только VCL Forms App (

Всего записей: 189 | Зарегистр. 30-09-2003 | Отправлено: 16:42 09-10-2007
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergeBS
Потому что необходим для отображения текстовой, а не графической информации.
 
Добавлено:
HekTo

Цитата:
VCL Forms App  

Так это оно и есть.

Всего записей: 3147 | Зарегистр. 29-09-2005 | Отправлено: 17:47 09-10-2007
Armag3000

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Цитата:
 
MrZeRo:
Можно разным потокам указывать предпочитаемый процессор для выполнения:

 
Прошу прощения, я не ясно выразился, я хочу запустить внешнее приложение (*.exe) и "заставить" его использовать оба (на двух ядерных) ядра.

Всего записей: 20 | Зарегистр. 17-02-2006 | Отправлено: 05:38 10-10-2007
ArtemiyUO

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HekTo
Да нельзя (дизайнер убран) в рунтайме может и можно.
Либ используеш VCL.NET либо ВС2005, либо натив. Советую натив)

Всего записей: 539 | Зарегистр. 12-12-2005 | Отправлено: 07:55 10-10-2007
   

Страницы: 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru