Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Textfiles Verständnisfrage & Frage (https://www.delphipraxis.net/184131-textfiles-verstaendnisfrage-frage.html)

Grayknife 28. Feb 2015 22:24

Textfiles Verständnisfrage & Frage
 
Hallo DPler,
Ich möchte gerne eine Variable mit Integerwert, also zb. einfach 14 extern in einer Textdatei speichern. Dazu habe ich folgende Prozedur entwickelt:

Delphi-Quellcode:
procedure TForm1.Speichern;
 var Speicher: Textfile;
     GesH:Integer;
begin

 Try
   Reset(Speicher,'Speicher.txt');
   Readln(Speicher,GesH);
   GesZ:=GesH + GesZ;
 Except
   AssignFile(Speicher,'Speicher.txt');
 End;
 Rewrite(Speicher);
 Writeln(Speicher,GesZ);
 CloseFile(SPeicher);
end;
Dabei soll erst geschaut werden ob es die Datei schon gibt. Wenn ja wird in der Datei der Integerwert rausgelesen und in GesH gespeichert. Anschließend wird GesZ mit GesH addiert und in GesZ gespeichert.
Wenn keine datei mit dem Namen Speicher.txt existiert soll in der except schleife eine erstellt werden. Anschließend wird der Zeiger auf ganz oben gestellt, das neue GesZ bzw. das existierende in der 1. zeile gespeichert, und dann geschlossen.

Sind meine Überlegungen richtig?
denn es gibt 1 komischen Fehler:
1. Wenn keine Datei existiert, wird mir trotzdem ein Fehler angezeigt, das die Datei nicht gefunden wurde, aber eigentlich müsste doch durch AssignFile eine erstellt werden? :?:

Uwe Raabe 28. Feb 2015 22:35

AW: Textfiles Verständnisfrage & Frage
 
Welche Delphi-Version verwendest du?

himitsu 28. Feb 2015 23:03

AW: Textfiles Verständnisfrage & Frage
 
FreePascal/Lazarus?
Delphi kennt kein derartigen Reset-Befehl (in der System.pas)

Zitat:

Wenn keine Datei existiert, wird mir trotzdem ein Fehler angezeigt
Wer zeigt den Fehler?
  • Welche Codezeile?
  • Der Debugger und/oder das Programm?

Fehler/Denkfehler:
  • AssignFile erstellt nichts, es initialisiert nur die Datei-Variable.
    Rewrite, Delphi-Referenz durchsuchenReset, Append öffnen/erstellen die Datei.
    Zitat:

    aber eigentlich müsste doch durch AssignFile eine erstellt werden
    Du hast bestimmt nicht die OH gelesen.
  • Man steuert nicht mit "Ausnahmen" den normalen Programmfluss. :warn:
    FileExists, IOResult oder Dergleichen?
  • Wenn die Datei von Reset geöffent wurde, wer schließt die dann wieder, bevor die nächten Dateioperationen (AssignFile/Rewrite) los gehn?

Luckie 28. Feb 2015 23:56

AW: Textfiles Verständnisfrage & Frage
 
Interessant wäre auch: Wo landet die Datei ohne Pfad Angabe? :roll:

Uwe Raabe 1. Mär 2015 10:20

AW: Textfiles Verständnisfrage & Frage
 
Zitat:

Zitat von himitsu (Beitrag 1291895)
FreePascal/Lazarus?
Delphi kennt kein derartigen Reset-Befehl (in der System.pas)

Genau! Interessant ist aber die Fehlermeldung des Compilers (XE7):

Zitat:

E2158 System-Unit veraltet oder beschädigt: '@assign' fehlt

Klaus01 1. Mär 2015 11:43

AW: Textfiles Verständnisfrage & Frage
 
Hallo,

Reset gibt es auch in Delphi.

Allerdings muss auch ein AssignFile durchgeführt werden, wenn die Datei mit Reset geöffnet wird.
Beispiel hier.

Grüße
Klaus

Sir Rufo 1. Mär 2015 11:49

AW: Textfiles Verständnisfrage & Frage
 
@Klaus01

Niemand hat behauptet, dass es
Delphi-Quellcode:
Reset
in Delphi nicht gibt.

himitsu hat gesagt, dass es allerdings kein
Delphi-Quellcode:
Reset
gibt, dass so
Delphi-Quellcode:
Reset( Speicher, 'Speicher.txt' );
aufgerufen werden kann. ;)

Grayknife 1. Mär 2015 13:58

AW: Textfiles Verständnisfrage & Frage
 
Ahh, so schnell so viele Antworten :shock: :-D

Also:
@Uwe Raabe, Hier ein Ausschnitt von der Info über Borland Delphi: "Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation." -> Also Version 10 !?

@himitsu, Sry, das war viel zu oberflächlich der Fehler: Das Programm lässt sich mit dem Debugger einwandfrei starten, Erst wenn die Prozedur ausgeführt wird, Kommt eine Infobox, wo ich das Programm Anhalten,Fortsetzen kann mit der Meldung: "Im Projekt Project1.exe ist eine Exception der KLasse EInOutError mit der Meldung "Datei nicht gefunden" aufgetreten." -> Also eine Benachrichtigung über die Debugger-Exception?!

Verstehe ich das richtig, dass ich nicht die Try-Except-Schleife verwenden kann? -> Muss ich dann eher eine If Fileexists=True then ... -Schleife verwenden?

@Luckie, Also so wie ich das immer überlege müsste sie in dem Ordner, wo sich die .Exe befindet, erstellt werden. Dachte ich mir immer jedenfalls ^^.

@Klaus01, Also kopiere ich einfach den Code aus dem Beispiel und bastel ihn in bei mir mit rein?

@Sir Rufo, Warum kann das Reset nicht so
Delphi-Quellcode:
Reset(Speicher,'Speicher.txt')
aufgerufen werden?

Sir Rufo 1. Mär 2015 14:11

AW: Textfiles Verständnisfrage & Frage
 
Weil die Dokumentation das sagt?

Delphi: http://docwiki.embarcadero.com/Libra...e/System.Reset
FPC: http://www.freepascal.org/docs-html/...tem/reset.html

Grayknife 1. Mär 2015 14:26

AW: Textfiles Verständnisfrage & Frage
 
@Sir Rufo, okey, also einfach nur
Delphi-Quellcode:
Reset(Speicher)
? Aber das verstehe ich jetzt nicht :D Oder doch... also dann ändere ich jetzt den Code zu:
Delphi-Quellcode:
procedure TForm1.Speichern;
 var Speicher: Textfile;
     GesH:Integer;
begin
GesH:=0;
   AssignFile(Speicher,'Speicher.txt');
   Reset(Speicher);
   Readln(Speicher,GesH);
   GesZ:=GesH + GesZ;
 Rewrite(Speicher);
 Writeln(Speicher,GesZ);
 CloseFile(SPeicher);
end;
Okey, mit AssignFile weise ich also der Variablen Speicher einfach Speicher.txt zu?! Und wie kann ich jetzt eine Text Datei erstellen? o.0


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.
Seite 1 von 3  1 23      

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