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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2011, 20:10   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию ошыбка Project vk_id.exe raised exception class eoserror with message System error

код потока:
Код:
unit id_parse_Unit;

interface

uses
  Classes, SysUtils;

type
  Id_parse = class(TThread)
  private
    { Private declarations }
  protected
    procedure memoadd(url:string; acc:string);
    function parse(code:string):string;
    function get_code(id:string):string;
    procedure Execute; override;
  end;

implementation

uses mainunit,strutils;

procedure Id_parse.Execute;
var j:integer;//разунок
cod:string;//код сайту
init:string; // дані про користувача

begin
try
for j :=strtoint(form3.Edit1.Text) to strtoint(form3.Edit2.Text)  do
  begin
    cod:=get_code(inttostr(j));
    init:=parse(cod);
    memoadd('http://vkontakte.ru/id'+inttostr(j),init);

  end;
finally

end;


end;

function Id_parse.get_code(id: string): string;
begin
result:=form3.IdHTTP1.Get('http://vkontakte.ru/id'+id);
end;

procedure Id_parse.memoadd(url, acc: string);
begin
form3.Memo1.Lines.Add(url+' '+acc);
end;

function Id_parse.parse(code:string): string;
var
bg:string;
en:string;
i:integer;
b_number:integer;
e_number:integer;
begin
  form3.codememo.lines.add(code);
  bg:='<title>';
  en:='</title>';

  b_number:=0;
  e_number:=0;

  for i := 1 to form3.CodeMemo.Lines.Count-1 do
  begin
    b_number:=posex(bg,form3.CodeMemo.Lines.Strings[i]);
    if b_number>0 then break;
  end;

  for I := 1 to form3.CodeMemo.Lines.Count-1 do
    begin
      e_number:=posex(en,form3.CodeMemo.Lines.Strings[i]);
      if e_number > 0  then    break;
    end;

  b_number:=b_number+7;

  result:=copy(form3.CodeMemo.Lines.Strings[i],b_number,e_number-b_number);
  form3.CodeMemo.Clear;


end;

end.
код главного модуля:
Код:
unit MainUnit;

interface

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

type
  TForm3 = class(TForm)
    Memo1: TMemo;
    Edit1: TEdit;
    Button: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Startbtn: TButton;
    SaveDialog1: TSaveDialog;
    IdCookieManager1: TIdCookieManager;
    IdHTTP1: TIdHTTP;
    CodeMemo: TMemo;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure StartbtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation
uses id_parse_unit;

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
form3.IdHTTP1.HandleRedirects:=true;
form3.IdHTTP1.CookieManager:=form3.IdCookieManager1;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
edit1.SetFocus;
end;

procedure TForm3.StartbtnClick(Sender: TObject);
var
ob:id_parse;
begin
ob:=id_parse.Create(false);
ob.Resume;
ob.Priority:=tpnormal;

end;

end.

после того как хочу закрыть окно программы такая ошыбка:
Project vk_id.exe raised exception class eoserror with message 'System error Code:1400. Недопустимый дескриптор окна'

знаю код не очень(мягко сказано)
но помогите если не лень)
Зарание спасибо)
Pein95 вне форума Ответить с цитированием
Старый 14.06.2011, 20:34   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Сходите в магазин, купите грифельную доску, мел, и 100 раз напишите вот такое предложение:

"Я не буду вызывать VCL код в контексте дополнительных потоков."
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 14.06.2011, 20:50   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
"Я не буду вызывать VCL код в контексте дополнительных потоков."
Ой, да прям уж так...
Для начала нужно хотя бы попробовать останавливать поток при OnClose главной формы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2011, 21:30   #4
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

спс Stilet но не помогло(
Pein95 вне форума Ответить с цитированием
Старый 15.06.2011, 23:18   #5
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

нет ни у кого больше идей?
Pein95 вне форума Ответить с цитированием
Старый 16.06.2011, 11:48   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

Есть, перенести idHTTP в поток, общаться через события, установка дополнительных данных через пользовательские свойства потока.

Пример даже вам сделал, чтобы не быть голословным и с ЧСВ
Вложения
Тип файла: rar ThreadIdHTTP.rar (268.2 Кб, 26 просмотров)
Alter вне форума Ответить с цитированием
Старый 17.06.2011, 20:38   #7
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

спс очень) помогло)
Pein95 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
project raised exception class estringlisterror with message list index out of bounds obsession Общие вопросы Delphi 23 09.05.2011 01:31
"Project 1.exe raised exception class EInvalidPointer with messege 'Invalid pointer operetion'".. DeEgo Помощь студентам 3 28.02.2010 07:51
Project Project1.exe raised exception class EnvalidOP Rock'n'rolla Безопасность, Шифрование 16 20.01.2010 18:39
"Project Project1.exe raised class EConvertError with message'''is not a valid floating point value'." Doz1metr Помощь студентам 9 24.06.2009 19:06
raised exception class EIdSocketError with message' Socket Error # 10022 Invalid argument eldar Работа с сетью в Delphi 16 08.08.2008 23:49