AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EReadError beim Lesen der mit TWriter geschriebenen Daten

EReadError beim Lesen der mit TWriter geschriebenen Daten

Ein Thema von DualCoreCpu · begonnen am 4. Aug 2015 · letzter Beitrag vom 4. Aug 2015
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 10:37
Dateiname ohne Pfadangebe vielleicht?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#2

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 10:50
Dateiname ohne Pfadangebe vielleicht?
Nein, leider nicht die Ursache. Wenn ich vor

  FReader := TFileStream.Create(...); das hier ergänze:

Delphi-Quellcode:
  Directory := GetCurrentDir;
  if Directory[Length(Directory)]<>'\then Directory := Directory + '\';
  FReader := TFileStream.Create(Directory + 'Testfile.def', fmOpenRead, fmShareDenyWrite);
erhalte ich dieselbe EFReadError Exception.

Was also kann ich noch tun?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.784 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 10:54
Lass Dir doch das Verzeichnis mal ausgeben.
Oder setze einen Haltepunkt und schau es dir im Debugger an.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 10:59
Welche R+ückgabe erwartest du von GetCurrentDirectory? Tipp: es muss nicht zwingend das Verzeichnis deiner Anwendung sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 11:56
Welche R+ückgabe erwartest du von GetCurrentDirectory? Tipp: es muss nicht zwingend das Verzeichnis deiner Anwendung sein.
Da er auch beim Schreiben mit GetCurrentDirectory hantiert, augenscheinlich eine verlässliche Information.

@dualCoreCpu
GetCurrentDirectory ist genauso zuverlässig wie relative Pfadangaben, und sobald auch nur ganz kurz "das passiert sowieso nicht" bei der Überlegung ob etwas schief gehen kann, aufblitzt, dann geht das garantiert schief.
Entweder du nutzt selbst definierte Pfadangaben oder (meiner Meinung nach besser), du nutzt die Windows-Standardverzeichnisse.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#6

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 11:59
Welche R+ückgabe erwartest du von GetCurrentDirectory? Tipp: es muss nicht zwingend das Verzeichnis deiner Anwendung sein.
Upps, wieso das nicht?

Von GetCurrentDir aud dem Hauptprogramm aufegerufen wewarte ich jenes Verzeichnis, in welchem meine Anwendung liegt.

Hab es jetzt so gemacht:

Directory := IncludeTrailingPathDelimiter(ExtractFilePath(Param str(0)));

führt aber nicht zm gewünschten Erfolg. Die EReadError Exception kommt immer noch.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 12:06
Das sagt doch schon der Name: "Gib das aktuelle Verzeichnis zurück". Einmal einen Open- oder Savedialog benutzt und dabei das Verzeichnis gewechselt, schon ist das aktuelle Verzeichnis nicht mehr das Anwendungsverzeichnis. Wenn du das Anwendungsverzeichnis willst, dann guck dir in der Hilfe mal ParamStr an. Davon mal abgesehen, dass es eine ganz schlechte Idee ist irgendwelche Dateien die auch geschrieben werden sollen im Anwendunsgverzeichnis abzulegen. Da dort nur Benutzer der Administratorengruppe schreiben können. Und wen du es anders einrichtest, überschreiben sich die verschiedenen Benutzer gegenseitig die Datei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#8

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 12:26
Das sagt doch schon der Name: "Gib das aktuelle Verzeichnis zurück". Einmal einen Open- oder Savedialog benutzt und dabei das Verzeichnis gewechselt, schon ist das aktuelle Verzeichnis nicht mehr das Anwendungsverzeichnis. Wenn du das Anwendungsverzeichnis willst, dann guck dir in der Hilfe mal ParamStr an. Davon mal abgesehen, dass es eine ganz schlechte Idee ist irgendwelche Dateien die auch geschrieben werden sollen im Anwendunsgverzeichnis abzulegen. Da dort nur Benutzer der Administratorengruppe schreiben können. Und wen du es anders einrichtest, überschreiben sich die verschiedenen Benutzer gegenseitig die Datei.
Ok, danke für den Hinweis. Werd ich bei praktischen Anwendungen beherzigen.

Open und Savedialog verwende ich in meinem Testprogramm nicht, aber das könnte in einer praktischen Anwendung natürlich schnell passieren. Dort werd ich wohl dann ein für Anwendungs bzw. Konfigurationsdaten ein eigenes Verzeichnis einrichten.

Zitat von baumina:
Wie heißt die Fehlermeldung genau und in welcher Zeile tritt sie auf?
Die Meldung lautet 'Stream Lesefehler' und tritt beim ersten ReadString auf.

  FTestFields.Feld1 := FileReader.ReadString;
.
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#9

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 12:17
Um weiteren Zwischenfragen vorzubeugen:

Die Datei aus der ich lesen will, existiert im Pfad und enthält auch Strings, die ich nun auslesen will.

Das Format ist

Byte
0 Inhalt $06 vermulich eine Signatur, denn dieses Byte steht vor hedem String.

1 Längenbyte obwohl Ansistrings geschrieben werden können, lt. Hilfe, gibt es nur ein
Längenbyte.

2-... der String

Danach die gleiche Abfolge -> SIgnatur, Längenbyte, String. Bis Dateiende. Am Dateiende steht das letzte Zeichen des letzten Strings.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 12:21
Wie heißt die Fehlermeldung genau und in welcher Zeile tritt sie auf?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:57 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