Entwickler-Ecke

Dateizugriff - Fehler bei Listen ausgabe:


jUli@ - Mo 02.09.02 09:42
Titel: Fehler bei Listen ausgabe:
ich habe in meinem Programm wenn ich auf liste ausgeben klicke einen
EInOutError! ... was ist das? E/A-Fehler6! ... wie kann ich das beheben?

Danke Julia


Tino - Mo 02.09.02 10:09

Hi,

was heißt "auf Liste ausgeben klicke"? Ist Liste ein Button und was machst Du in der OnClick Procedure des Buttons?

Gruß
TINO


jUli@ - Mo 02.09.02 11:39
Titel: liste ausgeben
ja das ist ein button. ich lege vorher über ein formular personendaten an, wechseln dann in mein listen formular . da habe ich einen button womit der meine eingegebenen Daten auslesen soll.


Tino - Mo 02.09.02 12:56

und dann beim lesen der Daten kommt es zu einem Fehler? Wenn ja, solltest Du mal den entsprechenden Code Abschnitt posten.


jUli@ - Mo 02.09.02 12:57


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TFormListe.btnShowClick(Sender: TObject);
var zeile, spalte :integer;
begin
     zeile:= 1;
     spalte := 0;
     dateiOffen := dateiOeffnen(persdat);
     while not Eof(personendatei) do begin  // <-- Fehler
                person:= datensatzLesen;
                if sgPerson.RowCount < (zeile+2)
                   then sgPerson.RowCount := sgPerson.Rowcount + 1;
                with person do
                begin
                     sgPerson.cells[spalte, zeile]:= IntToStr(persNr);
                     sgPerson.cells[spalte+1, zeile]:= vorname;
                     sgPerson.cells[spalte+2, zeile]:= name;
                     sgPerson.cells[spalte+3, zeile]:= DateToStr(gebDatum);
                end; //with
 
     inc(zeile);
     end; //while
     dateiGeschlossen := dateiSchliessen;
 
end;


Tino - Mo 02.09.02 14:03

Wie öffnest Du denn die Datei?


jUli@ - Mo 02.09.02 14:13

? wie wie öffne ich die? meinst du wie ich dir liste erstellè? mit nem fromCreate oder was meinst du?


jUli@ - Mo 02.09.02 14:18

die PersDat wir einmal in dieser Unit daklariert : PersDat: String;
in in der Main auch ..als: Const persdat='C:Pers.Dat';


Tino - Mo 02.09.02 14:34

Nein, das meine ich nicht.

Du greifst ja anscheind auf eine Datei zu, oder? Denn schließlich fragst Du ja in der While-Schleife mit EOF ab ob das Dateiende erreicht ist. Nur kann diese Funktion nicht arbeiten wenn Du zuvor die Datei eventl. nicht geöffnet hast. Die Frage ist also wo Du die Variable personendatei noch verwendest. Diese Variable brauchst Du an min. 3 zusätzlichen Stellen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
AssignFile (personendatei, 'Dateiename.txt');
Reset (personendatei);

while not Eof (personendatei) do
  begin
    {...}
  end;
  
CloseFile (personendatei);

Gruß


jUli@ - Mo 02.09.02 14:52

ach so.. das steht in dateiOeffen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function dateiOeffnen(dateiname:String):Boolean;
begin
     // try // = versuche
     Assign(Personendatei,dateiname);
     {$I-}
     Reset(Personendatei);
     {$I+}
     // except// = sonst
     if IOResult <> 0 then
     begin
          Rewrite(personendatei);
          result:=true;
     end;

end; // dateiOeffnen


jUli@ - Mo 02.09.02 16:19

oder meinst du das nicht? diese function liegt aber in einer anderen unit ist das schlimm?? muss ich dann was anderes eintragen?