Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi E/A Fehler 103 (https://www.delphipraxis.net/30739-e-fehler-103-a.html)

Pseudemys Nelsoni 28. Sep 2004 18:06


E/A Fehler 103
 
moin,

wo ist hier der fehler?

Delphi-Quellcode:
function TDataBase.AccountExists(const ANickname: string): boolean;
var
  DBFileItem: TDBFileItem;
begin
  result := false;
  AssignFile(FDBFile, FFilePath);
  try
    if FileExists(FFilePath) then
      ReSet(FDBFile)
    else exit;
    while not EOF(FDBFile) do
    begin
      read(FDBFile, DBFileItem);
      result := DBFileItem.Nickname = ANickname;
      if result then exit;
    end;
  finally
    CloseFile(FDBFile);
  end;
end;

der fehler kommt nur wenn die datei noch nicht existiert, wenn sie existiert kommt der fehler nicht, aber ich finde nicht wo der fehler da ist?

Duffy 28. Sep 2004 18:10

Re: E/A Fehler 103
 
Hallo Pseudemys Nelsoni,
die Datei ist nicht geöffnet worden ...

bye
Claus

Pseudemys Nelsoni 28. Sep 2004 18:12

Re: E/A Fehler 103
 
aber das "AssignFile" wurde ja ausgeführt oder? und das "CloseFile" muss am ende ja ausgeführt werden. ich weiss nicht wie ich den fehler behebe. nach meinem code läuft das so ab wenn eine datei nicht existiert:

AssignFile
exit
CloseFile(wird noch ausgeführt durch finally)

also kann doch nix falsch sein?

Christian Seehase 28. Sep 2004 18:15

Re: E/A Fehler 103
 
Moin Pseudemys Nelsoni,

AssignFile tut nichts anderes, als der Dateivariablen einen Pfad zuzuordnen.
Demzufolge läuft CloseFile u.U. auf eine nicht geöffnete Datei.

Pseudemys Nelsoni 28. Sep 2004 18:17

Re: E/A Fehler 103
 
Hallo Christian,


hmm, hats du eine idee was ich tun kann? soll ich das finally dann weglassen und das closefile nicht ausführen`?

Duffy 28. Sep 2004 18:21

Re: E/A Fehler 103
 
Danke Christian, Du spricht mir aus der Seele. Wenn es die Datei nicht gibt, gibt es wenigsten einen Fehler und lesen funktioniert ohne Datei auch nicht. Der Grund ist, das FileExist keine Exception auslöst.

bye
Claus

Pseudemys Nelsoni 28. Sep 2004 18:25

Re: E/A Fehler 103
 
ich les die datei doch gar nicht, nur wenn FileExists true ist, was hier nicht der fall ist.

hier wird lediglich

AssignFile
FileExists
exit
CloseFile (hier die exception)

ausgeführt...

Duffy 28. Sep 2004 18:36

Re: E/A Fehler 103
 
Hallo Pseudemys Nelsoni,
versuch es mal so
Delphi-Quellcode:
function TDataBase.AccountExists(const ANickname: string): boolean;
var
  DBFileItem: TDBFileItem;
begin
  Result := False;
 
  if not(FileExists(FFilePath)) then
    Exit;

  AssignFile(FDBFile, FFilePath);

  Resset(FDBFile); // <<<==--- Sorry den hatte ich vergessen

  while not EOF(FDBFile) do
  begin
    Read(FDBFile, DBFileItem);
    Result := DBFileItem.Nickname = ANickname;
    if Result then
      Exit;
  end;
 
  CloseFile(FDBFile);
end;
bye
Claus

Pseudemys Nelsoni 28. Sep 2004 19:08

Re: E/A Fehler 103
 
danke duffy, das geht :)

eddy 28. Sep 2004 19:17

Re: E/A Fehler 103
 
Hallo,

hier noch ein Programmstück:

Delphi-Quellcode:
uses
  System;  

    ....
    {$I-}
    AssignFile(f, lw_path_und_filename);
    Reset(f); // für Lesen oder Append(f); // für Anhängen
    if IOResult <> 0 then begin // Fehler beim Öffnen
      Rewrite(f); // Erzeuge Datei
      if IOResult <> 0 then begin
        ShowMessage('Datei konnte nicht angelegt werden');
        exit;
      end;
    end;
    Append(f);
    Writeln(f, 'irgendwas');
    Flush(f); // Sicherstellen, daß der Text tatsächlich in die Datei geschrieben wird.
    CloseFile(f);
    {$I+}
    ....
mfg
eddy

[edit=Christian Seehase]Tags korrgiert. Mfg, Christian Seehase[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz