Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prüfen ob eine Dateivariable mit Assign zugewiesen ist (https://www.delphipraxis.net/158194-pruefen-ob-eine-dateivariable-mit-assign-zugewiesen-ist.html)

diver03 9. Feb 2011 06:40

Delphi-Version: 5

Prüfen ob eine Dateivariable mit Assign zugewiesen ist
 
Hallo

gibt es eine Möglichkeit zu prüfen, ob einer Dateivariable (vom Typ Textfile) eine
Datei zugewiesen wurde?
Ich muss nicht wissen, welche Datei, sondern nur ob die entsprechende Dateivariable
mit assign bereits zugewiesen ist oder nicht.

MfG
Jens

WM_CLOSE 9. Feb 2011 07:00

AW: Prüfen ob eine Dateivariable mit Assign zugewiesen ist
 
So vielleicht?

Delphi-Quellcode:
var
  f:TTextFile
begin
  AssignFile(...);
  if f<>nil then
  begin
    try
      //machwas
    finally
      CloseFile(...);
    end;
  end;
end;

Sir Rufo 9. Feb 2011 08:08

AW: Prüfen ob eine Dateivariable mit Assign zugewiesen ist
 
Zitat:

Zitat von WM_CLOSE (Beitrag 1080433)
So vielleicht?

Delphi-Quellcode:
var
  f:TTextFile
begin
  AssignFile(...);
  if f<>nil then
  begin
    try
      //machwas
    finally
      CloseFile(...);
    end;
  end;
end;

wenn schon mit try..finally dann bitte auch richtig :)
Delphi-Quellcode:
var
  f:TTextFile
begin
  AssignFile( f, ... ); // f zuweisen
  if f <> nil then
  try
    ReWrite( f ); // oder
    // ReSet( f ); // oder
    // AppendFile( f ); // öffnet den Zugriff auf die Datei
    try
      // machwas
    finally
      CloseFile( f ); // der hier wieder geschlossen wird
    end;
  finally
    f := nil; // Zuweisung aufheben
  end;
end;

DeddyH 9. Feb 2011 08:15

AW: Prüfen ob eine Dateivariable mit Assign zugewiesen ist
 
Mein Delphi kennt weder TTextFile, noch lässt sich der Dateivariablen nil zuweisen oder gegen nil prüfen ;). 0 oder so geht allerdings auch nicht, und ich habe noch nicht herausbekommen, von welchem Typ "Dateivariable" nun wirklich ist.

gammatester 9. Feb 2011 08:23

AW: Prüfen ob eine Dateivariable mit Assign zugewiesen ist
 
Zitat:

Zitat von WM_CLOSE (Beitrag 1080433)
So vielleicht?

Delphi-Quellcode:
var
  f:TTextFile
begin
  AssignFile(...);
  if f<>nil then
  begin
    try
      //machwas
    finally
      CloseFile(...);
    end;
  end;
end;

Das ist doch wohl ziemlich unsinnig. Selbst wenn man außer acht läßt, daß es kein TTextfile gibt, ein Textfile kein Pointer ist etc: Wenn Du das AssignFile(...) aufrufst, dürfte die alte Verbindung ins Nirwana eingehen.

AssignFile(f) setzt TTextrec(f).Mode auf fmClosed, allerdings auch CloseFile. Reset/Rewrite etc setzen andere Werte der File mode constants. D.h. wenn TTextrec(f).Mode=fmClosed ist, kann man ziemlich sicher sein, daß f gerade nicht benutzt wird.

Zitat:

Zitat von Delphi-Hilfe
File mode constants are used to open and close disk files.

Unit

System

Category

file management routines

const fmClosed = $D7B0; // closed file

const fmInput = $D7B1; // reset file (TTextRec)
const fmOutput = $D7B2; // rewritten file (TTextRec)
const fmInOut = $D7B3; // reset or rewritten file (TFileRec)
const fmCRLF = $8 // DOS-style EoL and EoF markers (TTextRec)
const fmMask = $D7B3; // mask out fmCRLF flag (TTextRec)

Description

Use the file mode constants when opening and closing disk files. The Mode field of TFileRec and TTextRec will contain one of these values.


WM_CLOSE 9. Feb 2011 08:34

AW: Prüfen ob eine Dateivariable mit Assign zugewiesen ist
 
Was ist denn
Delphi-Quellcode:
System.Text
überhaupt für ein Dateityp, wenn es doch kein Objekt bzw Klasse ist???:?:
PS: Das mit dem TTextFile war nur so geraten.

PS: Die
Delphi-Quellcode:
TStringList
ist einfacher zu handhaben

diver03 9. Feb 2011 12:52

AW: Prüfen ob eine Dateivariable mit Assign zugewiesen ist
 
Danke, der Tipp mit TTextrec(f).Mode hat mir geholfen.
Damit kann ich arbeiten


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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