Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1121347666
Zak3D[@Tm]
2005-07-14 17:27
2005.07.31
Взаимосвязь модулей приложения.


1-1121330368
753
2005-07-14 12:39
2005.07.31
Вопрос по наследованию


1-1120996920
Толян
2005-07-10 16:02
2005.07.31
Работа и прослушка модема


4-1117805575
ctranik
2005-06-03 17:32
2005.07.31
RegEnumKeyEx непоказывает все подключи,


1-1121327926
Ascana
2005-07-14 11:58
2005.07.31
Тормозит компонент TListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский