Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   I/O Error 103 (https://www.delphipraxis.net/72228-i-o-error-103-a.html)

bonanza 27. Jun 2006 12:27


I/O Error 103
 
Hi,

ich bekomme in folgendem Code einen "I/O Error 103":

Delphi-Quellcode:

AssignFile (Text_Datei, 'C:\test.txt');
rewrite(text_datei);
Write(Text_Datei, IdHTTP.Get('http:/-entfernt-/test.txt') );
CloseFile(Text_Datei);
was heißt das ? und wie kann ich das beheben ?


vielen dank schonmal im voraus !

EDatabaseError 27. Jun 2006 12:31

Re: I/O Error 103
 
I/O:
Zitat:

103
Datei nicht geöffnet
Wird von CloseFile, Read, Write, Seek Eof, FilePos FileSize, Flush, BlockRead oder
BlockWrite gemeldet, wenn die Datei nicht geöffnet ist.

bonanza 27. Jun 2006 12:33

Re: I/O Error 103
 
und wie kann ich das jetzt beheben ?

wenn ich doch eine neue datei mit "assignfile" erstelle, dann ist sie doch offen oder nicht ?!

EDatabaseError 27. Jun 2006 12:34

Re: I/O Error 103
 
Mit AssignFile wird die Datei nicht erstellt sondern definiert. Erstellen tust du mit ReWrite.


Mfg

Luckie 27. Jun 2006 12:35

Re: I/O Error 103
 
Nein. Damit wird der Dateivariable nur eine Datei zugewiesen. Geöffnet wird sie mit Delphi-Referenz durchsuchenrewrite oder Delphi-Referenz durchsuchenreset.

bonanza 27. Jun 2006 12:36

Re: I/O Error 103
 
und wie kann ich das nun beheben ?

EDatabaseError 27. Jun 2006 12:37

Re: I/O Error 103
 
wie ich bereits gesagt hab ;-) :lol:

ich kann aber auch nicht verstehen warum das nicht funktioniert. sieht eigentlich ganz logisch aus.

bonanza 27. Jun 2006 12:40

Re: I/O Error 103
 
Villeicht sollte ich dazu sagen, dass das immer erst im 2. durchlauf passiert...also das ganze ist in einer schleife, die alle 30sek ausgeführt wird :angel:

Klaus01 27. Jun 2006 12:42

Re: I/O Error 103
 
.. hast Du Dir schonmal die FileAtribute der erstellten Datei
angeschaut? Vielleicht WriteProtected?

Eine andere Frage, warum machst Du in der Schleife die Datei immer wieder auf und zu?
Ist es nicht besser, die Datei einmal zu öffnen und spätestestens beim Programmende zu schließen?

Grüße
Klaus

EDatabaseError 27. Jun 2006 12:50

Re: I/O Error 103
 
Zitat:

Zitat von bonanza
Villeicht sollte ich dazu sagen, dass das immer erst im 2. durchlauf passiert...also das ganze ist in einer schleife, die alle 30sek ausgeführt wird :angel:

send mal die ganze schleife denn wenn du das file im ersten durchgang zu machst und im 2. nicht mehr öffnest -> 103

bonanza 27. Jun 2006 12:56

Re: I/O Error 103
 
Delphi-Quellcode:
{...}
var
  Form1: TForm1;
  MyTextFile: TStringList;
  text_Datei : System.Text;
  s:String;
  bla:textfile;
  list1:TStringlist;

//...
procedure TForm1.FormCreate(Sender: TObject);
begin
 timer1.Enabled := true;
timer1.interval := 30000;
end;


procedure TForm1.Ontimer(Sender: TObject);
begin
AssignFile (Text_Datei, 'C:\test.txt');
rewrite(text_datei);
Write(Text_Datei, IdHTTP.Get('http:/-entfernt-/test.txt') );
CloseFile(Text_Datei);
//...
end;
//....

EDatabaseError 27. Jun 2006 12:58

Re: I/O Error 103
 
Zitat:

Zitat von bonanza
Delphi-Quellcode:
{...}
var
  Form1: TForm1;
  MyTextFile: TStringList;
  text_Datei : System.Text;
  s:String;
  bla:textfile;
  list1:TStringlist;

//...
procedure TForm1.FormCreate(Sender: TObject);
begin
 timer1.Enabled := true;
timer1.interval := 30000;
end;


procedure TForm1.Ontimer(Sender: TObject);
//--------------------------------------------------muss da nicht ein begin hin gruebel???
AssignFile (Text_Datei, 'C:\test.txt');
rewrite(text_datei);
Write(Text_Datei, IdHTTP.Get('http:/-entfernt-/test.txt') );
CloseFile(Text_Datei);
//....

muss da oben nicht ein begin hin?!?

bonanza 27. Jun 2006 13:00

Re: I/O Error 103
 
tuts auch ^^

sry hab es dummerweise mit ausgeschnitten....*oben edit*

EDatabaseError 27. Jun 2006 13:04

Re: I/O Error 103
 
:| ... könnte es sein:
-das der download zu lange dauert und die datei schon wieder zu ist
-oder das heruntergeladene file via reset geöffnet werden muss um den darin enthaltenen string zu lesen/schreiben


mach mal in dem write einen ganz simplen string 'asd'

mfg

bonanza 27. Jun 2006 13:08

Re: I/O Error 103
 
gleiches problem...getestet mit:

Delphi-Quellcode:

//....
AssignFile (Text_Datei, 'C:\freeaccount.cgi');
rewrite(text_datei);
Write(Text_Datei, {IdHTTP.Get('http://XXX/test.txt')}'asd' );
CloseFile(Text_Datei);
//....

EDatabaseError 27. Jun 2006 13:12

Re: I/O Error 103
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  text_datei:textFile;
begin
AssignFile (Text_Datei, 'C:\freeaccount.cgi');
rewrite(text_datei);
Write(Text_Datei, {IdHTTP.Get('http://XXX/test.txt')}'asd' );
CloseFile(Text_Datei);

end;

end.
getestet und das funktioniert.

Mfg

bonanza 27. Jun 2006 13:12

Re: I/O Error 103
 
bei mir funktioniert es ja auch beim 1. mal...aber dann eben nicht mehr...

EDatabaseError 27. Jun 2006 13:15

Re: I/O Error 103
 
ich kann den button tausende male drücken.
wie oft wird der timer ausgefüht mach mal den timer nach begin enabled := false und wenn alles fertig ist gibst du ihn erst wieder mit enabled := true wieder frei.

bonanza 27. Jun 2006 13:16

Re: I/O Error 103
 
das wird so oft wie möglich ausgeführt...alle 30 sek (ich kann es auch auf 2 min stellen) ... um zu testen, ob sich was "getan" hat...

EDatabaseError 27. Jun 2006 13:18

Re: I/O Error 103
 
teste bitte das enabled.

bonanza 27. Jun 2006 13:34

Re: I/O Error 103
 
immer noch das problem....aber nach etwas "rumtüfteln" kriege ich jetzt den "I/O Error 32" ist das besser als der andere ? :mrgreen:

EDatabaseError 27. Jun 2006 13:36

Re: I/O Error 103
 
:shock: solch einen Fehler gibt es gar nicht ?!?

bonanza 27. Jun 2006 13:37

Re: I/O Error 103
 
Die einzige brauchbare aber auch net wirklich gute auskunft dazu: HIER

kann aber damit nix anfangen :-(

EDatabaseError 27. Jun 2006 13:38

Re: I/O Error 103
 
unten steht computer neu starten dann ist der error vl. weg.

bonanza 27. Jun 2006 14:00

Re: I/O Error 103
 
mal angenommen, das programm greift an späterer stelle noch auf diese datei zu...mit welchem befehl kann ich den zugriff beenden, bzw die datei freigeben ?

EDatabaseError 27. Jun 2006 14:04

Re: I/O Error 103
 
mit closefile(f); gibst du sie frei.
:? es wäre sehr hilfreich wenn du mal alles postest was mit der datei was zu tun hat.

bonanza 27. Jun 2006 14:08

Re: I/O Error 103
 
Delphi-Quellcode:

procedure TForm1.Timer1Timer(Sender: TObject);

begin
 timer1.Enabled := true;
timer1.interval := 30000;

end;


procedure TForm1.Ontimer(Sender: TObject);
var
i,j: integer;
ergebnis:boolean;
begin

ergebnis := true;
DeleteFile('C:\text.txt') ; //<-- Er schafft es nicht beim 2. durchlauf die datei zulöschen.
AssignFile (Text_Datei, 'C:\text.txt');
rewrite(text_datei);
Write(Text_Datei, IdHTTP.Get('http://XXX/text.txt') );
reset(text_datei);
CloseFile(Text_Datei);
reset(text_datei);

Application.ProcessMessages;

list1 := TStringlist.Create;
list1.LoadFromFile('C:\text.txt');
i := list1.Count;
AssignFile(bla,'C:\text.txt');
Reset(bla);
for i := 0 to i - 1 do begin
readln(bla,s);
memo1.Lines.Add(s);
if (pos('Peter',s)>0) then begin
  memo1.Lines.Add('Hubert');
  ergebnis := false;
  end;
end;
CloseFile(bla);   //ab hier hab ich so ziemlich alles ausprobiert ^^
list1.Free;
MyTextFile.free ;

end;

EDatabaseError 27. Jun 2006 14:11

Re: I/O Error 103
 
Zitat:

Zitat von bonanza
Delphi-Quellcode:
{
procedure TForm1.Timer1Timer(Sender: TObject);

begin
 timer1.Enabled := true;
timer1.interval := 30000;

end;
setz das im OI
}

procedure TForm1.Ontimer(Sender: TObject);
var
i,j: integer;
ergebnis:boolean;
begin
On.Enabled := false; //timer disabeln
ergebnis := true;
DeleteFile('C:\text.txt') ; //<-- Er schafft es nicht beim 2. durchlauf die datei zulöschen.
AssignFile (Text_Datei, 'C:\text.txt');
rewrite(text_datei);
Write(Text_Datei, IdHTTP.Get('http://XXX/text.txt') );
//reset(text_datei);//////////////////////////////////////////////////////////////////du kannst die datei nicht nochmal öffnen;
CloseFile(Text_Datei);
//reset(text_datei);///////////////////////////////////////////////////////////////////////und hier schließ du die datei nichtmehr also weglassen.

Application.ProcessMessages;

list1 := TStringlist.Create;
list1.LoadFromFile('C:\text.txt');
i := list1.Count;
AssignFile(bla,'C:\text.txt');
Reset(bla);
for i := 0 to i - 1 do begin
readln(bla,s);
memo1.Lines.Add(s);
if (pos('Peter',s)>0) then begin
  memo1.Lines.Add('Hubert');
  ergebnis := false;
  end;
end;
CloseFile(bla);   //ab hier hab ich so ziemlich alles ausprobiert ^^
list1.Free;
MyTextFile.free ;
on.enabled := true; //Timer enablen
end;


so ich hab ein paar fehler weg gemacht probiers mal aus.
//edit more fehler weg.

bonanza 27. Jun 2006 14:18

Re: I/O Error 103
 
SUPER DANKE....so wie es aussieht funktionert es...

THX !!

EDatabaseError 27. Jun 2006 14:20

Re: I/O Error 103
 
:thumb: endlich...

mfg
tobi


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz