Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Fehlererkennung "Datei nicht geschlossen"

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
13.07.2007, 17:39 Uhr
~tomtom07
Gast


Hallo,
wie kann ich im normalen DOS unter C erkennen, ob eine Datei die geladen werden soll, nicht korrekt geschlossen wurde vorher. Also das Programm soll diese Datei entweder nachträglich schließen (geht sowas überhaupt? ...die Datei ist definiert immer gleich groß, es werden nur Werte in der Datei geändert), oder dann löschen und neu anlegen.
Das ganze Problem entsteht nur deshalb, weil dies ein embedded-PC ist, dem auch mal unverhofft der Strom abgeschaltet werden kann.
Danke für Hilfe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.07.2007, 17:57 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ich würde jetzt einfach mal behaupten das es DOS ziemlich egal ist ob die Datei geschlossen wurde oder nicht nachdem der zugreifende Prozess beendet ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.07.2007, 18:02 Uhr
~tomtom07
Gast


... dem DOS vielleicht.... aber mir geht es darum: Ich möchte die Datei beim nächsten Programmstart öffnen und dann hängt das Programm, weil eben die Datei vorhanden, aber nicht korrekt geschlossen wurde vorher.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.07.2007, 18:08 Uhr
~tomtom07
Gast


Um das noch mal genau zu sagen.... ich möchte so einen möglichen Fehler (nicht korrekt geschlossene Datei) erkennen und definiert reagieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.07.2007, 18:13 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Was ist das denn für ein DOS auf dem PC?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.07.2007, 18:20 Uhr
~tomtom07
Gast


im Moment: MS-DOS6.22
Also es geht um eine Daten-Datei die während der Laufzeit des Programms geöffnet werden soll, nicht um die eigentliche Programmdatei, welche natürlich ok ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.07.2007, 23:03 Uhr
~tomtom07
Gast


Hi Leutz,
keiner 'ne Idee so 'ne Datei zumindest zu erkennen? Ich tue mich echt schwer ohne Programmabsturz auf die Datei zuzugreifen...
Am Beispiel gebe ich mit printCOM1 ne Meldung über COM1, logisch ;-) aus.... (weil kein Display)
Hier mal Spielchen mit fopen, fclose,.... und dos-fehlermeldungen.
Die ersten 2 Meldungen gibt der aus, dann steht die Kiste... (vermutlich bei fread) das nützt mir eben nix, ich will zumindest wenn so 'ne offene Datei existiert, die erkennen und löschen...

gucke:


C++:
if ((fp = fopen(name, "rb")) == NULL)        // nicht auf d: vorhanden
  errorcheck = 1;                    // auf d nicht da
else                            // Auswertung von d
{
  fseek(fp,0L,SEEK_END);
  sprintf(temp_string,"ferror: %s |%i |%i",name,ferror(fp),_doserrno);
  printCOM1(temp_string);

  fclose(fp);
  sprintf(temp_string,"ferror: %s |%i |%i",name,ferror(fp),_doserrno);
  printCOM1(temp_string);

  fp = fopen(name, "rb");
  fseek(fp,0L,SEEK_SET);
  if(vb2ptr) fread(vb2ptr,16384,16,fp);
  sprintf(temp_string,"ferror: %s |%i |%i",name,ferror(fp),_doserrno);
  printCOM1(temp_string);




Bearbeitung:

code-tags eingefügt und anderen entfernt


Dieser Post wurde am 14.07.2007 um 09:48 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.07.2007, 08:30 Uhr
~f.-th.
Gast


Du schreibst also irgendwelche Daten in eine Datei und wenn der Stecker gezogen wird,
willst du wissen was bis dahin passiert ist?

Erst mal musst du dafür sorgen das direkt in die Datei und nicht in den Chache geschrieben
wird. Und dann könntest du den Datenfluss überprüfen, vor dem Interrupt, ob alle Daten
geschrieben und danach eine Dateiendeinfo ans Ende der Datei hängen.

Oder den PC per Hardware Notlaufeigenschaft verpassen damit er die Vorgänge korrekt
beendigen kann.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
15.07.2007, 08:38 Uhr
~f.-th.
Gast


Ansonsten in der Regele können nicht 2 Programme gleichzeitig eine Datei bearbeiten.

Ich glaube mich zu erinnern, das du aber nur lesend auf eine Datei zugreifen kannst mit
mehreren Programmen. Musst also mal schauen wie du unter C nur liest beim Zugriff.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
15.07.2007, 09:01 Uhr
~f.-th.
Gast


Anderer Weg beim Start Datendatei umbenennen und der Weg sollte frei sein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: