Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Exception bei Reset(FileName) (https://www.delphipraxis.net/172717-exception-bei-reset-filename.html)

philharmony 18. Jan 2013 17:36

Exception bei Reset(FileName)
 
Hallo
Ich möchte Daten aus einer Textdatei laden. Ich hole mir den Dateipfad aus einem OpenDialog und möchte die Datei dann öffnen.
Das ganze mache ich ganz normal mit:
Delphi-Quellcode:
FCurrentFile : TextFile;
SourceFileName : String
...
AssignFile(FCurrentFile, SourceFileName);
Reset(FCurrentFile);
tuwasdamit      
CloseFile(FCurrentFile);
Die Datei wurde zuvor schonmal auf dem selben Wege gespeichert. Und jetzt spuckt mir der Compiler bei Reset(FCurrentFile) eine Exception vom Typ:
External : SIGSEGV bei Adresse 403244
aus. DIe Datei ist nicht schreibgeschützt und nicht anderweitig geöffnet.
Was kann ich tun?

Zacherl 19. Jan 2013 14:36

AW: Exception bei Reset(FileName)
 
Was passiert, wenn du mal direkt die WinAPI MSDN-Library durchsuchenCreateFile, MSDN-Library durchsuchenReadFile, MSDN-Library durchsuchenWriteFile verwendest? Fals es damit auch fehlschlägt, was sagt MSDN-Library durchsuchenGetLastError nach dem Aufruf?

p80286 19. Jan 2013 21:44

AW: Exception bei Reset(FileName)
 
Zitat:

Zitat von philharmony (Beitrag 1199685)
Die Datei wurde zuvor schonmal auf dem selben Wege gespeichert.

Ich denke nicht, daß Du auf diesem Wege Daten gespeichert hast.

Sind da vielleicht dyn. Arrays oder Pointer im Spiel. Hast Du Bereichsprüfung & Co. aktiviert?

Gruß
K-H

MeierZwoo 20. Jan 2013 00:06

AW: Exception bei Reset(FileName)
 
Normalerweise kapselt man ein reset/rewrite/append nach den AssignFile in {$I-} und {$I+} und fragt das IOResult=0 bzw. <>0 ab.

Aber SIGSEGV = Illegal storage access tritt auch bei einem I/O-Error nicht auf. Das SIGSEGV zeigt wohl ehr, daß der PfadName ungültig ist und ins Nirwana schreibt.

philharmony 20. Jan 2013 11:25

AW: Exception bei Reset(FileName)
 
:wall:
Oh man bin ich blöd!
FCurrentFile : TextFile; ist Teil einer Klasse von der ich genau wie viele Instanzen erzeugt habe?
Richtig, die Zeile OpenFile := TOpenFile.create hat gefehlt.


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