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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - 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,097
По умолчанию

Цитата:
"Я не буду вызывать 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,183
По умолчанию

Есть, перенести 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