AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

E/A-Fehler 103

Ein Thema von McSchuh · begonnen am 10. Sep 2005 · letzter Beitrag vom 11. Sep 2005
Antwort Antwort
McSchuh

Registriert seit: 8. Sep 2005
2 Beiträge
 
#1

E/A-Fehler 103

  Alt 10. Sep 2005, 21:54
Hi,

ich habe folgendes Problem. Mit dem unten dargestellten Code (Auszug aus dem Gesamtcode) soll ein Datenlogger programmiert werden, also ein Programm was ermöglicht Messwerte z.B. in einer Datei abzuspeichern. In meinem Beispiel erstelle ich ein CSV-Datei (kann von Excel gelesen werden). Es sollen immer 2000 Werte in eine Datei geschrieben werden und dann die nächste angelegt werden. Aber nachdem die Datei angelegt wurde und anscheinend Werte reingeschrieben wurden, kommt beim Ausführen der Anweisung closeFile(Datei) eine Exception der Klasse EInOutError mit der Meldung E/A-Fehler 103. Ich habe schon in der Delphi Hilfe nachgeschaut und dort stand '103 Datei nicht geöffnet'. Wenn ich dann die erstellte Datei öffne, ist sie leer. Wenn ich allerdings vorm else closeFile(Datei) schreibe, dann wird eine Messwertreihe (also eine Zeile) gespeichert. Und nun komme ich nicht mehr weiter denn ich will ja 2000 Werte in einer Datei speichern.

Danke schonmal für Eure Bemühungen.

MfG

McSchuh

Delphi-Quellcode:
if ZaehlerMesswerte < 2000 then
    begin
    ZaehlerMesswerte := ZaehlerMesswerte+1;
    DatumZeit := FormatDateTime('yyyymmddhhmmss', now);
    assignFile(Datei, DateiPfad+DatumZeit+'.csv');
    rewrite(Datei);
    writeln(Datei,'Strom,Spannung,CosPhi,Temperatur,Uhrzeit');
    writeln(Datei,Edit1.Text,',',Edit2.Text,',',Edit3.Text,',',Edit4.Text,',',Edit6.Text);
    end
  else
    begin
    closeFile(Datei);
    assignFile(Datei, DateiPfad+DatumZeit+'.csv');
    rewrite(Datei);
    ZaehlerMesswerte := 0;
    writeln(Datei,'Strom,Spannung,CosPhi,Temperatur,Uhrzeit');
    writeln(Datei,Edit1.Text,',',Edit2.Text,',',Edit3.Text,',',Edit4.Text,',',Edit6.Text);
    end;
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: E/A-Fehler 103

  Alt 10. Sep 2005, 22:30
Delphi-Quellcode:
if ZaehlerMesswerte < 2000 then
begin
  ZaehlerMesswerte := ZaehlerMesswerte+1;
  DatumZeit := FormatDateTime('yyyymmddhhmmss', now);
  assignFile(Datei, DateiPfad+DatumZeit+'.csv');
  rewrite(Datei);
  writeln(Datei,'Strom,Spannung,CosPhi,Temperatur,Uhrzeit');
  writeln(Datei,Edit1.Text,',',Edit2.Text,',',Edit3.Text,',',Edit4.Text,',',Edit6.Text);
end
else
begin
  closeFile(Datei); <-- Fehler ! bei > 2000 wird closefile ohne das rewrite von < 2000
                          nicht aufgerufen !
  assignFile(Datei, DateiPfad+DatumZeit+'.csv');
  rewrite(Datei);
  ZaehlerMesswerte := 0;
  writeln(Datei,'Strom,Spannung,CosPhi,Temperatur,Uhrzeit');
  writeln(Datei,Edit1.Text,',',Edit2.Text,',',Edit3.Text,',',Edit4.Text,',',Edit6.Text);
end;
Reihenfolge immer :

Delphi-Quellcode:
begin
  rewrite (...
  Writeln ( ...
  CloseFile (...
end;
Gruß
Hansa
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: E/A-Fehler 103

  Alt 11. Sep 2005, 10:18
Hallo McSchuh,

die Kontrolle für die Umschaltung der log files ist fehlerhaft. Du erzeugst bei jedem Durchlauf die Datei neu (rewrite). Ich habe dir eine Demo angehängt.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip datalog_169.zip (2,5 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#4

Re: E/A-Fehler 103

  Alt 11. Sep 2005, 10:56
Bin mir nicht mehr ganz sicher, weil ich eigentlich ausschließlich mit FileStreams arbeite, aber war es nicht so, dass Rewrite die Datei neu erstellt wenn sie noch nicht vorhanden ist, und zum Schreiben öffnet wenn es sie schon gibt?
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#5

Re: E/A-Fehler 103

  Alt 11. Sep 2005, 12:02
Ween es die Datei schon gibt, wird sie von ReWrite geleert. Hier würde Append besser passen (setzt den Dateizeiger auch gleich ans Ende)
  Mit Zitat antworten Zitat
McSchuh

Registriert seit: 8. Sep 2005
2 Beiträge
 
#6

Re: E/A-Fehler 103

  Alt 11. Sep 2005, 20:24
Vielen Dank für Eure guten Tipps. Habe es mit Append hinbekommen.

MfG

McSchuh
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 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