Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 00:35   #11
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
попробуйте поставить Image1.PICTURE.bitmap.assign(jpg)
Нет, эта связка работает нормально:
Код:
Jpg.LoadFromStream(Stream);
Image1.Picture.Assign(Jpg);
У ТС JPG=NIL, так что ваш первый вывод насчет одноименных переменных и есть причина.
mihali4 вне форума Ответить с цитированием
Старый 29.11.2010, 01:29   #12
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Цитата:
у вас две переменные с именем jpg в одной области видимости(одна как поле класса, другая как локальная переменная).
Можно подробней, а то не понял
Цитата:
попробуйте поставить Image1.PICTURE.bitmap.assign(jpg)
ставил не помогло
Цитата:
и вообще, где текст ошибки?
Ну не песать же мне чуть ли не постоянно Access volation###
Цитата:
у вас поток всего один или много?
VCL поток и tthread
Цитата:
У ТС JPG=NIL, так что ваш первый вывод насчет одноименных переменных и есть причина.
Переименовал, теперь без ошибки зависает
bulldog5293 вне форума Ответить с цитированием
Старый 29.11.2010, 01:36   #13
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
у вас две переменные с именем jpg в одной области видимости(одна как поле класса, другая как локальная переменная).

Можно подробней, а то не понял
Что непонятного-то ?
Я выделил жирным красным в вашем коде - смотрите первый пост.
mihali4 вне форума Ответить с цитированием
Старый 29.11.2010, 01:49   #14
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Не это не с этим связанно, у меня на png капчу также сделано, меня всё таки интересует вопрос, после того как я вынес модальное окно из синхронизации в поток, форма не зависла полностью и капчу я получил, с чем такой расклад может связан быть? Синхронизацию я выполняю два раза на одну и туже форму, но с разными параметрами. Может ли быть с этим связанно? Если да и нужён будет кусок кода то выложу утром, а то не охота уже лишний раз глаза мазолить
bulldog5293 вне форума Ответить с цитированием
Старый 29.11.2010, 02:01   #15
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС, вы создавали тему про зависание потока, если у вас кривой код, то зависать будет всегда.
вы вообще работали с потоками раньше?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.11.2010, 02:04   #16
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Нет, я над своим твореньем уже долго работаю и доделывать стал только сейчас
bulldog5293 вне форума Ответить с цитированием
Старый 29.11.2010, 02:06   #17
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

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

вы часом в основе не пишите нигде TThread.Execute?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.11.2010, 08:21   #18
Bad-XxX
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 18
По умолчанию

Цитата:
mihali4
Ахинею постыдились бы писать...
Что ни фраза, то "перл".
Уж кто бы про ахинею говорил. Модератор - и такой неадекват, больше флейма и троллинга, чем реальной пользы. Количество постов набиваете? ^_^
Топикстартер, BUX.Execute принадлежит TThread (BOT)? Объект jpg стоит переименовать, хоть и по идее, перекрытие объекта не должно быть проблемой в этом участке кода, однако в будущем может вызвать проблемы.
Также
img1.savetofile('c:\1.jpg');
приводит к тому, что на диске ц появляется Ваша загружаемая картинка?
Если нет - ошибка судя по всему здесь: HTTP_BUX.get('http://' + FUrl + 'captch.php', img1);
Если это так - то нужно смотреть другую часть кода.

Из общих правил форума :
Цитата:
3.При создании постов, участии в обсуждении запрещено:

3.1.Публиковать сообщения, содержащие заведомо ложную информацию, грубые, нецензурные выражения, оскорбления в любой форме, а также призывы и высказывания, разжигающие межнациональную рознь, публично обсуждать репутацию пользователей, администрацию форума
Администратор и Модераторы вправе удалять такие сообщения. И ставить штрафы на своё усмотрение.

Последний раз редактировалось mihali4; 29.11.2010 в 16:37.
Bad-XxX вне форума Ответить с цитированием
Старый 29.11.2010, 11:21   #19
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
Злость

Вот код потока
Код:

type
  BOT = class(TThread)
    FUrl: String;
    FLogin: String;
    FPassword: String;
  private
    HTTP_BUX: TIdHTTP;
    png: TPNGObject;
    JPEG: TJPEGImage;
    code: string;
    ghopa: string;
    procedure capcha;
    procedure go;
  protected
    public
  end;
procedure BUX.Execute;
var
  img: TMemoryStream;
    png: TPNGObject;
    JPEG: TJPEGImage;
  Stream: TMemoryStream;

      begin
        HTTP_BUX.get('http://' + FUrl);
        HTTP_BUX.get('http://' + FUrl + 'login.php?r=', S);
        begin
        If Pos('image.php?', S.datastring) > 0 then
          try
          img := TMemoryStream.Create;
          png := TPNGObject.Create;
          HTTP_BUX.get('http://' + FUrl + 'image.php?', img);
          img.Position := 0;
          png.LoadFromStream(img);
          code := '';
          Synchronize(capcha);
          if code <> '' then
          inf.Add('username=' + FLogin);
          inf.Add('password=' + FPassword);
          inf.Add('code=' + code);
          ain := HTTP_BUX.Post('http://' + FUrl + 'login.php', inf);
          вход := poster(ain);
          finally
          png.Free;
          inf.Free;
          img.Free;
        end
        else
        begin
          inf.Add('username=' + FLogin);
          inf.Add('password=' + FPassword);
          ain := HTTP_BUX.Post('http://' + FUrl + 'login.php', inf);
          вход := poster(ain);
          inf.Free;
        end;
        end;
        S.Position := 0;
        st := TStringStream.Create;
        HTTP_BUX.get('http://' + FUrl + вход, st);
        If Pos('ads.php', st.datastring) > 0 then
        begin
          HTTP_BUX.get('http://' + FUrl + 'ads.php', st);
        end
        else
        begin
          If Pos('sites.php', st.datastring) > 0 then
          begin
            HTTP_BUX.get('http://' + FUrl + 'sites.php', st);
          end;
        end;
       Otvet := HTTP_BUX.get('http://' + FUrl + Z + N);
      Ur := PosSrc(Otvet);
      Otvet1 := HTTP_BUX.get('http://' + FUrl + Ur);
      end;
      end;
      h := SetTimeOutJS(Otvet1);
      g1 := Para(Otvet1);
      HTTP_BUX.get('http://' + Form13.Listview1.Items[0].SubItems.strings[0]);
      Sleep(h);
            Otvet3 := TStringStream.Create;
      HTTP_BUX.get('http://' + FUrl + g1, Otvet3);
      begin
      If Pos('src="', Otvet3.datastring) > 0 then
          try
      cis := TStringList.Create;
      Stream:=TMemoryStream.Create;
        JPEG:=TJPEGImage.Create;   //создаем jpeg
      HTTP_BUX.get('http://' + FUrl + 'captch.php', Stream);
      Stream.Position:=0; //устанавливаем ОБЯЗАТЕЛЬНО на ноль
        JPEG.LoadFromStream(Stream);//загружаем данные из потока
        Form10.Image1.Picture.Assign(JPEG);
        ghopa := '';
          Synchronize(go);//без синхронизации не зависает
          if ghopa <> '' then
      cis.Add('captcha=' + ghopa);
      HTTP_BUX.Post('http://' + FUrl + y, cis);
      finally
      JPEG.Free;
      Stream.Free;
          end;
      end;
end;

procedure BUX.go;
begin
ghopa := TForm9.GetCapa(JPEG);
end;

procedure BUX.capcha;
begin
  code := TForm9.GetCapcha(png);
end;
код формы получения капчи
Код:
  public
 class function GetCapcha(png: TPNGObject): string;
 class function GetCapa(jpg: TJpegImage): string;
     { Public declarations }
  end;

var
  Form9: TForm9;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm9.Button1Click(Sender: TObject);
begin
  ModalResult := mrOk;
end;

class function TForm9.GetCapcha(png: TPNGObject): string;
begin
 form9.ShowModal;
 Result := form9.Edit1.Text;
begin
form9.Free;
  end;
end;

class function TForm9.GetCapa(jpg: TJpegImage): string;
begin
 form9.ShowModal;
 Result := form9.Edit1.Text;
begin
    form9.Free;
  end;
end;
В конечном итоге не чего не получается, либо зависает полностью, либо ошибка что модальная форма без синхронизации открывается потоком
ещё что добавить?

Последний раз редактировалось bulldog5293; 29.11.2010 в 12:03.
bulldog5293 вне форума Ответить с цитированием
Старый 29.11.2010, 11:23   #20
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

можно еще текст методов go и captcha(которые синхрониз)
особенно волнует go
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация с капчей и без bulldog5293 Работа с сетью в Delphi 11 25.08.2010 01:17
трабл БД cyber_NINJA Помощь студентам 0 20.05.2010 17:42
трабл Informer Общие вопросы C/C++ 0 02.06.2009 15:21
НУЖЕН ПРОГРАММИСТ для написания ПО по распознованию капчей pro_ccx Фриланс 1 31.05.2008 11:37