Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

ошибка i/o при работе с браузером на delphi   Найти похожие ветки 

 
im-13   (2005-07-11 17:33) [0]

написал стандартную программу на делфе, которая открывает браузер по заданному url, после чего весь html-код копируется в файл(test.html) для посдедующего редактирования, но после того как файл создается(test.html) он не может открытся assignfile, т.е. любая попытка прочитать строку заканчивается ошибкой i/o error  104, в чем может быть проблема помогите!!!???

код:
var f,test,f2:textfile;
s,s1,s2,s3,s4:string;
i,j,size:integer;
p1,p2,fl1,fl2:integer;
begin
j:=0;
assignfile(f,"D:\2.txt");
reset(f);
while not eof(f) do
begin
 readln(f,s);
 s1:=s;
 chdir("D:\");
 for i:=0 to length(s) do
 begin
   if s[i]=" " then s[i]:="+";
 end;

 repeat
 WebBrowser1.Navigate("url");
 while WebBrowser1.ReadyState < READYSTATE_COMPLETE do
   Application.ProcessMessages;
 memo1.Lines.add("Done");
 HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
 PersistFile := HTMLDocument as IPersistFile;
 str(j,s2);
 PersistFile.Save(StringToOleStr("D:"test.html"), True);
 while HTMLDocument.readyState <> "complete" do
   Application.ProcessMessages;

 assignfile(f2,"D:\"test.html");
 size:=FileSize(f2);
 closefile(f2);
 inc(j);
 until size<>3559;

{
 reset(test);

 assignfile(f2,"D:\"1.txt");
 rewrite(f2);
while not eof(test) do


 
begin...end ©   (2005-07-11 17:36) [1]

Переформулируйте вопрос.


 
im-13   (2005-07-11 17:38) [2]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, OleCtrls, SHDocVw, ActiveX, MSHTML_TLB;

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

var
 Form1: TForm1;
 HTMLDocument: IHTMLDocument2;
 Document: ihtmlDocument2;
 PersistFile: IPersistFile;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var f,test,f2:textfile;
s,s1,s2,s3,s4:string;
i,j,size:integer;
p1,p2,fl1,fl2:integer;
begin
j:=0;
assignfile(f,"D:\2.txt");
reset(f);
while not eof(f) do
begin
 readln(f,s);
 s1:=s;
 chdir("D:\");
 for i:=0 to length(s) do
 begin
   if s[i]=" " then s[i]:="+";
 end;

 repeat
 WebBrowser1.Navigate("url");
 while WebBrowser1.ReadyState < READYSTATE_COMPLETE do
   Application.ProcessMessages;
 memo1.Lines.add("Done");
 HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
 PersistFile := HTMLDocument as IPersistFile;
 str(j,s2);
 PersistFile.Save(StringToOleStr("D:"test.html"), True);
 while HTMLDocument.readyState <> "complete" do
   Application.ProcessMessages;

 assignfile(f2,"D:\"test.html");
 size:=FileSize(f2);
 closefile(f2);
 inc(j);
 until size<>3559;

{
 reset(test);

 assignfile(f2,"D:\"1.txt");
 rewrite(f2);
while not eof(test) do
fl1:=1;
while fl1=1 do
 begin
   readln(test,s2);
   if copy(s2,length(s2)-7,7)="</html>" then fl1:=0;
   p1:=1;
   p2:=1;
   while p1<>0 do
   begin
     p1:=pos(s2,"<li> <font size="-1"> ");
     delete(s2,p1,22);
     p2:=pos(s2," </font> </li>");
     delete(s2,p2,14);
     s3:=copy(s2,p1,p2-p1);
     writeln(f2,s3);
  end;
  closefile(f2);
  closefile(test);
 end; }
 end;
end;

end.


 
Плохиш ©   (2005-07-11 17:41) [3]


> im-13   (11.07.05 17:33)

Файлы закрывать нужно


 
im-13   (2005-07-11 17:42) [4]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, ActiveX, MSHTML_TLB;

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

var
Form1: TForm1;
HTMLDocument: IHTMLDocument2;
Document: ihtmlDocument2;
PersistFile: IPersistFile;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var f,test,f2:textfile;
s,s1,s2,s3,s4:string;
i,j,size:integer;
p1,p2,fl1,fl2:integer;
begin
j:=0;
assignfile(f,"D:\2.txt");
reset(f);
while not eof(f) do
begin
readln(f,s);
s1:=s;
chdir("D:\");
for i:=0 to length(s) do
begin
  if s[i]=" " then s[i]:="+";
end;

repeat
WebBrowser1.Navigate("url");
while WebBrowser1.ReadyState < READYSTATE_COMPLETE do
  Application.ProcessMessages;
memo1.Lines.add("Done");
HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
PersistFile := HTMLDocument as IPersistFile;
str(j,s2);
PersistFile.Save(StringToOleStr("D:"test.html"), True);
while HTMLDocument.readyState <> "complete" do
  Application.ProcessMessages;

assignfile(f2,"D:\"test.html");
size:=FileSize(f2);
closefile(f2);
inc(j);
until size<>3559;

reset(test);

assignfile(f2,"D:\"1.txt");
rewrite(f2);
while not eof(test) do
fl1:=1;
while fl1=1 do
begin
  readln(test,s2);
  if copy(s2,length(s2)-7,7)="</html>" then fl1:=0;
  p1:=1;
  p2:=1;
  while p1<>0 do
  begin
    p1:=pos(s2,"<li> <font size="-1"> ");
    delete(s2,p1,22);
    p2:=pos(s2," </font> </li>");
    delete(s2,p2,14);
    s3:=copy(s2,p1,p2-p1);
    writeln(f2,s3);
 end;
 closefile(f2);
 closefile(test);
end;
end;
end;

end.


 
im-13   (2005-07-11 18:08) [5]

если я не ошибаюсь программа перестает работать после этого кода:

PersistFile.Save(StringToOleStr("D:"test.html"), True);
while HTMLDocument.readyState <> "complete" do
 Application.ProcessMessages;

assignfile(f2,"D:\"test.html");

size:=FileSize(f2); - на этой строке происходит ошибка - вообщето она просисходит всегда при попытке прочитать файл, в любом предстовлении,
если я правильно понял то мне нужно закрыть файл после

PersistFile.Save(StringToOleStr("D:"test.html"), True);
while HTMLDocument.readyState <> "complete" do
 Application.ProcessMessages;

но как если я его не открывал до этого, а хочу открыть только после


 
begin...end ©   (2005-07-11 18:10) [6]

> im-13   (11.07.05 18:08) [5]
> size:=FileSize(f2); - на этой строке происходит ошибка

Во-первых, файл f2 не открыт.
Во-вторых, FileSize не применим для текстовых файлов.


 
Плохиш ©   (2005-07-11 18:16) [7]


> im-13   (11.07.05 18:08) [5]

FileSize + F1 читать до полного просветления


 
im-13   (2005-07-11 18:21) [8]

ладно с filesize - это так попытка из ничего
я тут немного напутал с новой и старой версие программы

repeat
WebBrowser1.Navigate("url");
while WebBrowser1.ReadyState < READYSTATE_COMPLETE do
 Application.ProcessMessages;
memo1.Lines.add("Done");
HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
PersistFile := HTMLDocument as IPersistFile;
PersistFile.Save(StringToOleStr("D:\"test.html"), True);
while HTMLDocument.readyState <> "complete" do
 Application.ProcessMessages;

---вот я его открываю----

assignfile(test,"D:\"test.html");
reset(test);
assignfile(f2,"D:\"1.txt");
rewrite(f2);

while not eof(test) do -- на этой строке(и на других подобных версия кода, например просто прочитать одну строку из test) происходит ошибка

fl1:=1;
while fl1=1 do
begin
 readln(test,s2);
 if copy(s2,length(s2)-7,7)="</html>" then fl1:=0;
 p1:=1;
 p2:=1;
 while p1<>0 do
 begin
   p1:=pos(s2,"<li> <font size="-1"> ");
   delete(s2,p1,22);
   p2:=pos(s2," </font> </li>");
   delete(s2,p2,14);
   s3:=copy(s2,p1,p2-p1);
   writeln(f2,s3);
end;
closefile(f2);
closefile(test);


 
im-13   (2005-07-11 18:24) [9]

и еще
при этом файл f2 открывается нормально


 
begin...end ©   (2005-07-11 18:26) [10]

> im-13   (11.07.05 18:21) [8]

> fl1:=1;
> while fl1=1 do
> begin
>  readln(test,s2);
> ...

Бесконечный цикл, выход за границы файла test.


 
im-13   (2005-07-11 18:31) [11]

дело в том что хоть что там будет программа не доходит до этого кода она останавливается на первой попытке доступа к файлу test



Страницы: 1 вся ветка

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
5-1090854143
sirin
2004-07-26 19:02
2005.07.31
ActiveX Control


1-1121138794
Delphi_is_cool
2005-07-12 07:26
2005.07.31
"Вырезать", "Копировать" и "Вставить" в TWebBrowser


1-1121338766
Woolen
2005-07-14 14:59
2005.07.31
Делегаты в Delphi 2005


3-1118912182
KorvinOE
2005-06-16 12:56
2005.07.31
Типы данных в MySQL


4-1117211300
Сергей Красин
2005-05-27 20:28
2005.07.31
COM port