AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

try & except Problem

Ein Thema von netscanner · begonnen am 20. Jun 2006 · letzter Beitrag vom 21. Jun 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: try & except Problem

  Alt 21. Jun 2006, 06:27
mach aus dem rewrite mal nen normales write...
Thomas
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#12

Re: try & except Problem

  Alt 21. Jun 2006, 07:01
Zitat von atreju2oo0:
mach aus dem rewrite mal nen normales write...
Aber nur aus dem zweiten. Rewrite öffnet nämlich die Datei...
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: try & except Problem

  Alt 21. Jun 2006, 07:15
Zitat von Waldteufel:
Zitat von atreju2oo0:
mach aus dem rewrite mal nen normales write...
Aber nur aus dem zweiten. Rewrite öffnet nämlich die Datei...
Stimmt zwar, aber im Kontext des Codes ist es falsch (WriteLn statt Write, beide auf Writeln, dafür das Reset auf Rewrite):
Delphi-Quellcode:
try
  assignfile (datei, 'rekord.txt'); //rekord wird geladen
  reset (datei);
  readln (datei, rekordhalter);
  readln (datei, punkttxt);
  closefile (datei);
except
  reset (datei);
  rewrite (datei, 'NoName');
  rewrite (datei, '10');
  closefile (datei);
  assignfile (datei, 'rekord.txt');
end;
Da stimmen mehrere Sachen nicht.
  • Erstmal muss das AssignFile VOR das Try.
  • 'Reset' öffnet eine Datei zum Lesen, 'Rewrite' öffnet sie zum Schreiben, initialisiert sie aber (sie ist also nach dem Rewrite komplett leer).
  • Den Dateinamen solltest Du irgendwo als Konstante deklarieren.
  • Dein Codefragment setzt 'Rekordhalter' und 'PunkteTxt' nur dann, wenn die Datei existiert, sonst ist der Inhalt der Variablen undefiniert.
Dann würde ich das anders lösen: Der Inhalt der Datei kann nur gelesen werden, wenn die Datei auch existiert, bzw. wird sie mit Vorgabewerten belegt, wenn sie noch nicht exisitiert:
Delphi-Quellcode:
Const
  MyFilename = 'rekord.txt';
  VorgabeName = 'NoName';
  VorgabePunkte = '10';
...
  assignfile (datei, MyFileName);
  If Not FileExists (MyFileName) Then Begin // Wenn die Datei nicht existiert, wird sie mit Vorgabewerten belegt
    ReWrite (datei); // Öffnet die Datei zum Schreiben und setzt den Dateiendezeiger nach vorne
    Try // Fehlerbehandlung für 'rewrite' fehlt.
      rekordhalter := VorgabeName; // Jetzt sind die Variablen belegt
      PunktTxt := VorgabePunkte;
      WriteLn (datei, RekordHalter); // Vorgabewerte in die Datei schreiben
      WriteLn (datei, PunktTxt);
    Finally
      CloseFile (Datei);
    End
  End
  Else Begin // Datei existiert, kann also gelesen werden
    reset (datei); // Hier müsste noch eine komplette Fehlerbehandlung rein
    Try // Denn die Datei kann gesperrt sein, oder sonstwas
      readln (datei, rekordhalter);
      readln (datei, punkttxt);
    Finally
     closefile (datei);
    End
  End;
...
Die Fehlerbehandlung für das Öffnen der Datei kann man durch umschließen der gesamten Routine mit einem Try...Except erreichen, nurdas das etwas ungenau ist.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:37 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