Форум: "Основная";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];
Внизошибка 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.031 c